diff --git a/playground/acf_pacf.html b/playground/acf_pacf.html new file mode 100644 index 000000000..72e6232f8 --- /dev/null +++ b/playground/acf_pacf.html @@ -0,0 +1,393 @@ + + + + + + tsb — ACF / PACF / Portmanteau Tests + + + + +
+
+
Initializing playground…
+
+ + ← Back to roadmap +

ACF / PACF & Portmanteau Tests

+

+ Autocorrelation (acf), partial autocorrelation (pacf), + cross-correlation (ccf), Durbin-Watson, Ljung-Box, and Box-Pierce tests — + mirrors statsmodels.tsa.stattools and pd.Series.autocorr. +

+ +
+

1 — Single-lag autocorrelation (pandas-style)

+

+ autocorr(x, lag) computes the Pearson correlation between + x[0..n−lag−1] and x[lag..n−1], exactly like + pd.Series.autocorr(lag). +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ +
+

2 — Full ACF with Bartlett confidence intervals

+

+ acf(x, { nlags, alpha }) returns all autocorrelations at lags 0…nlags. + With alpha=0.05, Bartlett confidence intervals are returned: lags whose + CI excludes zero are statistically significant. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ +
+

3 — Partial ACF (Levinson-Durbin)

+

+ pacf(x, { nlags, alpha }) uses the Levinson-Durbin recursion to compute + partial autocorrelations. For a true AR(p) process, only the first p PACF values are + significantly non-zero — this is how you identify the AR order. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ +
+

4 — Cross-Correlation Function (CCF)

+

+ ccf(x, y, { nlags, alpha }) measures the linear relationship between + x[t] and y[t+k] at each lag k. Peaks in the CCF reveal + lead/lag relationships between two series. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ +
+

5 — Durbin-Watson statistic

+

+ durbinWatson(residuals) tests for first-order autocorrelation in OLS residuals. + Values near 2 indicate no autocorrelation; values near 0 indicate positive autocorrelation; + values near 4 indicate negative autocorrelation. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ +
+

6 — Ljung-Box & Box-Pierce portmanteau tests

+

+ ljungBox(x, { lags }) and boxPierce(x, { lags }) test the null + hypothesis that no autocorrelation exists up to a given lag. Small p-values reject the + white-noise hypothesis. Ljung-Box has better finite-sample properties. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + + + + + diff --git a/playground/arima.html b/playground/arima.html new file mode 100644 index 000000000..17b2fe6d5 --- /dev/null +++ b/playground/arima.html @@ -0,0 +1,406 @@ + + + + + + tsb — ARIMA + + + +
+
+

Loading tsb runtime…

+
+ + ← back to tsb playground +

ARIMA

+

+ ARIMA(p, d, q) time-series model — estimation, forecasting, and prediction intervals. + Mirrors statsmodels.tsa.arima.model.ARIMA. +

+ + +
+

1 — Fit an AR(1) model

+

+ new ARIMAModel({ p, d, q }) constructs the model; + .fit(y) estimates the parameters using the Hannan-Rissanen + two-step method and returns coefficients, sigma², AIC, and BIC. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

2 — Multi-step forecast with prediction intervals

+

+ model.forecast(steps) returns point forecasts and 95 % prediction + intervals computed via ψ-weight recursion. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

3 — ARMA(1,1) model

+

+ Combine AR and MA terms. ARMA(1,1): x_t = φ x_{t−1} + θ ε_{t−1} + ε_t. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

4 — ARIMA(1,1,0): integrated series

+

+ Set d=1 for I(1) series (random walk, stock prices, etc.). + The model differences the series before fitting. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

5 — fitArima convenience function

+

+ fitArima(y, opts) is a one-liner shorthand for constructing + and fitting an ARIMA model. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + + + diff --git a/playground/avro.html b/playground/avro.html new file mode 100644 index 000000000..e4e48cd6e --- /dev/null +++ b/playground/avro.html @@ -0,0 +1,347 @@ + + + + + + tsb — Apache Avro I/O + + + +
+
+

Loading tsb runtime…

+
+ + ← back to tsb playground +

Apache Avro I/O

+

+ Read and write Apache Avro Object Container Files (OCF) as DataFrames. + Mirrors pandas.read_avro(). Pure TypeScript, no external deps. +

+ + +
+

1 — Write and read back an Avro file

+

+ toAvro(df) serializes a DataFrame to an uncompressed Avro OCF buffer. + readAvro(buf) parses it back. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

2 — Nullable columns

+

+ Columns containing null are automatically serialized as + Avro unions (["null", type]) and decoded back with nulls + preserved. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

3 — Select specific columns with usecols

+

+ Pass usecols to read only a subset of columns, saving + memory and parse time. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

4 — Error handling

+

+ readAvro throws descriptive errors for bad magic bytes or + unsupported codecs (deflate, snappy). +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + + + diff --git a/playground/dlm.html b/playground/dlm.html new file mode 100644 index 000000000..9f39cdaaa --- /dev/null +++ b/playground/dlm.html @@ -0,0 +1,533 @@ + + + + + + tsb — Dynamic Linear Model (DLM) + + + + +← back to index + +

Dynamic Linear Model (DLM)

+

+ The DLM (West & Harrison state-space framework) generalises the Kalman filter to + named components — local level, linear trend, Fourier seasonality — that can be + freely combined. Fits observation and state noise by MLE. +

+ + +
+

1 · Model & data

+
+
+ + +
+
+ + +
+
+ +
+ + 1.0 +
+
+
+ +
+ + 0.30 +
+
+
+ +
+ + 60 +
+
+
+ +
+ + 10 +
+
+
+
+ + + + +
+
+ + +
+

2 · Filter / smoother / forecast

+
+
+
+
+ + +
+

3 · Code

+
// loading…
+
+ + + + + diff --git a/playground/ets.html b/playground/ets.html new file mode 100644 index 000000000..beacabbea --- /dev/null +++ b/playground/ets.html @@ -0,0 +1,550 @@ + + + + + + tsb — Exponential Smoothing (ETS / Holt-Winters) + + + +
+
+

Loading tsb runtime…

+
+ + ← back to tsb playground +

Exponential Smoothing (ETS / Holt-Winters)

+

+ Simple Exponential Smoothing, Holt linear trend, and full Holt-Winters seasonal models. + Mirrors statsmodels.tsa.holtwinters.ExponentialSmoothing. +

+ + +
+

1 — Simple Exponential Smoothing (SES)

+

+ SimpleExpSmoothing fits ETS(A,N,N): level-only smoothing with + parameter α. All h-step forecasts equal the final level. α is estimated by + minimising SSE via Nelder-Mead. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

2 — Holt's Linear Trend (Double Exponential Smoothing)

+

+ Holt extends SES with a trend component β (ETS(A,A,N)). + Optionally damps the trend with φ (ETS(A,Ad,N)) to prevent over-shooting. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

3 — Holt-Winters Additive Seasonal

+

+ ExponentialSmoothing with trend: "add" and + seasonal: "add" models data with a linear trend plus additive + seasonal fluctuations. Classic Holt-Winters ETS(A,A,A). +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

4 — Holt-Winters Multiplicative Seasonal

+

+ Use seasonal: "mul" when the amplitude of seasonal swings + grows with the level (common in economic time series). ETS(A,A,M). +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

5 — Forecast with prediction intervals

+

+ forecastWithCI(steps, alpha) returns point forecasts plus + (1 − α) % prediction intervals. Intervals widen with forecast horizon. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

6 — Model selection via AIC/BIC

+

+ Compare SES, Holt, and Holt-Winters using information criteria. Lower AIC/BIC + indicates a better balance of fit and parsimony. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

7 — Known initialisation and fixed parameters

+

+ You can supply fixed smoothing parameters or initial state values. + Use initializationMethod: "known" to set the initial state + directly without estimating it. +

+
+
+ JavaScript +
+ + +
+
+ +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + + + diff --git a/playground/filters.html b/playground/filters.html new file mode 100644 index 000000000..0bfe91a82 --- /dev/null +++ b/playground/filters.html @@ -0,0 +1,534 @@ + + + + + + tsb — Digital Filters + + + + +
+
+
Initializing playground…
+
+ + ← Back to roadmap +

🎛️ Digital Filters — Interactive Playground

+

+ FIR and IIR filter design and application — mirrors scipy.signal.
+ Edit any code block below and press ▶ Run + (or Ctrl+Enter) to execute it live in your browser. +

+ + +
+

1. Low-pass FIR with firwin

+

Design a 51-tap Hamming-windowed low-pass FIR and check its DC and Nyquist gain.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

2. High-pass FIR

+

Pass high frequencies by setting pass_zero: false. DC gain should be near 0, Nyquist near 1.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

3. Apply FIR: lfilter vs filtfilt

+

lfilter is causal (has phase delay); filtfilt applies the filter twice for zero-phase output.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

4. Butterworth low-pass filter design

+

Design a 4th-order Butterworth IIR filter. butter returns both SOS form (numerically preferred) and ba form.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

5. Apply Butterworth: sosfilt vs sosfiltfilt

+

Filter a noisy 50 Hz signal to remove 300 Hz interference. Zero-phase output is closer to the clean reference.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

6. High-pass Butterworth

+

A 2nd-order Butterworth high-pass attenuates DC and passes high frequencies.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

7. Butterworth gain at cutoff — multiple orders

+

All Butterworth filters have exactly −3 dB gain at the cutoff frequency, regardless of order.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

API Reference

+ + + + + + + + + + +
FunctionDescriptionMirrors
firwin(n, cutoff, opts?)FIR design (windowed-sinc)scipy.signal.firwin
butter(N, Wn, type?)Butterworth IIR designscipy.signal.butter
freqz(b, a?, worN?)FIR/IIR frequency responsescipy.signal.freqz
sosfreqz(sos, worN?)SOS frequency responsescipy.signal.sosfreqz
lfilter(b, a, x)Causal FIR/IIR filterscipy.signal.lfilter
filtfilt(b, a, x)Zero-phase filterscipy.signal.filtfilt
sosfilt(sos, x)Causal SOS filterscipy.signal.sosfilt
sosfiltfilt(sos, x)Zero-phase SOS filterscipy.signal.sosfiltfilt
+
+ + + + + + + diff --git a/playground/hmm.html b/playground/hmm.html new file mode 100644 index 000000000..a2cdcc40c --- /dev/null +++ b/playground/hmm.html @@ -0,0 +1,333 @@ + + + + + + tsb — Hidden Markov Models + + + + +

Hidden Markov Models

+

+ tsb implements GaussianHMM and MultinomialHMM: + Hidden Markov Models with Baum-Welch EM parameter estimation and Viterbi decoding. + Mirrors the hmmlearn API. +

+ +

1 · Gaussian HMM — two hidden regimes

+

Generate a regime-switching time series (e.g. bull/bear market) and recover the hidden states.

+
+ +
+
+ +

2 · Multinomial HMM — discrete symbols

+

Fit a model to a discrete sequence (e.g. text symbols, DNA codons).

+
+ +
+
+ +

3 · Viterbi standalone

+

Given known parameters, decode the most-likely state sequence directly.

+
+ +
+
+ +

API Reference

+
import { GaussianHMM, MultinomialHMM, fitGaussianHMM, hmmViterbi } from "tsb";
+
+// Gaussian HMM
+const model = new GaussianHMM({ nComponents: 2, nIter: 100 });
+model.fit(observations);
+const states = model.predict(newObs);   // Viterbi
+const logP   = model.score(newObs);     // log P(obs | model)
+const proba  = model.predictProba(obs); // posterior P(z_t | obs)
+const sample = model.sample(100);       // { states, obs }
+
+// Multinomial HMM (integer symbols)
+const mmodel = new MultinomialHMM({ nComponents: 2, nFeatures: 4, nIter: 100 });
+mmodel.fit(integerObs);
+const mstates = mmodel.predict(integerObs);
+
+// Convenience: fit and return model
+const fitted = fitGaussianHMM(obs, 2);
+
+// Standalone Viterbi with known parameters
+const decoded = hmmViterbi(startProb, transmat, emissionProb, obs);
+
+ + + + diff --git a/playground/index.html b/playground/index.html index 02628c327..cb64c3034 100644 --- a/playground/index.html +++ b/playground/index.html @@ -601,6 +601,56 @@

✅ Complete +
+

📡 Signal Processing — FFT, STFT, Welch PSD

+

FFT/IFFT/RFFT (Cooley-Tukey radix-2), fftFreq, fftshift/ifftshift, 8 window functions (getWindow), Short-Time Fourier Transform (stft/istft with overlap-add), Welch power spectral density, and periodogram. Mirrors numpy.fft and scipy.signal.

+
✅ Complete
+
+
+

🎛️ Digital Filters — FIR, Butterworth IIR

+

FIR filter design via windowed-sinc (firwin), Butterworth IIR (butter), frequency response (freqz, sosfreqz), and filter application: lfilter (causal), filtfilt (zero-phase), sosfilt, sosfiltfilt. Mirrors scipy.signal.

+
✅ Complete
+
+
+

🗂️ ORC Format I/O — readOrc / toOrc

+

Apache ORC (Optimized Row Columnar) file format reader and writer. Supports BOOLEAN, INT/LONG, FLOAT/DOUBLE, STRING columns with NONE compression and RLE v1 / direct encoding. Mirrors pandas.read_orc() and DataFrame.to_orc().

+
✅ Complete
+
+
+

📈 ACF / PACF & Portmanteau Tests

+

autocorr, acf (Bartlett CI), pacf (Levinson-Durbin), ccf, durbinWatson, Ljung-Box and Box-Pierce portmanteau tests. Mirrors statsmodels.tsa.stattools and pd.Series.autocorr.

+
✅ Complete
+
+
+

📉 ARIMA(p,d,q) Time-Series Models

+

ARIMAModel and fitArima — Hannan-Rissanen two-step estimation, multi-step forecasting, prediction intervals, AIC/BIC. Mirrors statsmodels.tsa.arima.model.ARIMA.

+
✅ Complete
+
+
+

🔭 Kalman Filter & RTS Smoother

+

KalmanFilter — linear Gaussian state-space models with forward Kalman filter and backward RTS smoother. Factory helpers localLevel, localLinearTrend. Missing observations handled transparently.

+
✅ Complete
+
+
+

📦 Apache Avro OCF I/O — readAvro / toAvro

+

readAvro and toAvro — Apache Avro Object Container File reader and writer. Supports all Avro primitives, arrays, maps, unions, and records. Zigzag varint encoding. Mirrors pandas.read_avro().

+
✅ Complete
+
+
+

📊 Exponential Smoothing — ETS / Holt-Winters

+

SimpleExpSmoothing, Holt, and ExponentialSmoothing — SES, Holt linear trend, and full Holt-Winters with additive/multiplicative seasonal components. Nelder-Mead parameter optimisation, AIC/BIC/AICc, prediction intervals. Mirrors statsmodels.tsa.holtwinters.ExponentialSmoothing.

+
✅ Complete
+
+
+

🔲 Dynamic Linear Model (DLM)

+

DLM — West & Harrison state-space framework. Local-level, local-linear-trend, polynomial trend, Fourier seasonal components, free combination via combineDLMs. Kalman filter, RTS smoother, h-step forecasting, MLE fitting, discount-factor model. Mirrors the R dlm package.

+
✅ Complete
+
+
+

🔮 Hidden Markov Model (HMM)

+

GaussianHMM, MultinomialHMM — Baum-Welch EM parameter estimation, Viterbi decoding, forward-backward log-space algorithm. Regime detection, sequence labeling. Mirrors hmmlearn.

+
✅ Complete
+
diff --git a/playground/kalman.html b/playground/kalman.html new file mode 100644 index 000000000..b89ce40ec --- /dev/null +++ b/playground/kalman.html @@ -0,0 +1,476 @@ + + + + + + tsb — Kalman Filter & State-Space Models + + + + +
+
+

Loading tsb…

+
+ +← Back to index +

🔭 Kalman Filter & State-Space Models

+

+ Linear Gaussian state-space model — Kalman filter (forward pass) and + RTS smoother (backward pass). Mirrors statsmodels.tsa.statespace + and pykalman.KalmanFilter. +

+ + +
+

📐 The State-Space Model

+

+ A linear Gaussian SSM describes a latent state x_t and + observations y_t via two equations: +

+
+ x_t = F · x_{t-1} + w_t, w_t ~ N(0, Q) (state transition)
+ y_t = H · x_t + v_t, v_t ~ N(0, R) (observation)
+ x_0 ~ N(m_0, P_0) +
+
    +
  • F — state transition matrix (n_states × n_states)
  • +
  • H — observation matrix (n_obs × n_states)
  • +
  • Q — process noise covariance
  • +
  • R — observation noise covariance
  • +
  • m_0, P_0 — initial state distribution
  • +
+

+ The Kalman filter computes filtered state + estimates x_{t|t} (posterior after seeing observation t). + The RTS smoother computes smoothed estimates + x_{t|T} using all T observations. +

+
+ + +
+

📈 Local-Level Model (Random Walk + Noise)

+

+ The simplest SSM: a hidden state that follows a random walk, observed + with noise. Perfect for denoising a noisy scalar time series or + estimating a slowly changing mean. +

+
+
+ example-1.ts +
+ + +
+
+ +
Click ▶ Run to execute
+
+
+ + +
+

🔄 RTS Smoother — Filling Gaps Retrospectively

+

+ The filter only uses observations up to time t. The smoother uses + all observations to produce better estimates, especially for + time-steps near missing values. Smoothed uncertainty is always ≤ filtered. +

+
+
+ example-2.ts +
+ + +
+
+ +
Click ▶ Run to execute
+
+
+ + +
+

📊 Local Linear Trend (Level + Slope)

+

+ A 2-state model: [level, slope]. The level increases by the + slope each step; both drift over time. Great for tracking slowly changing + trends with missing observations. +

+
+
+ example-3.ts +
+ + +
+
+ +
Click ▶ Run to execute
+
+
+ + +
+

⚙️ Custom State-Space Model (AR(1) State)

+

+ Build your own model by specifying the four matrices directly. + Here: a state that follows an AR(1) process with coefficient 0.9. +

+
+
+ example-4.ts +
+ + +
+
+ +
Click ▶ Run to execute
+
+
+ + +
+

🔢 Multi-Dimensional Observations

+

+ The Kalman filter naturally handles multi-dimensional observations. + Here: 2 sensors observing a single latent state. +

+
+
+ example-5.ts +
+ + +
+
+ +
Click ▶ Run to execute
+
+
+ + +
+

📖 API Reference

+
    +
  • KalmanFilter.localLevel(opts?) — random-walk + noise (1-D)
  • +
  • KalmanFilter.localLinearTrend(opts?) — level + slope (2-D state)
  • +
  • new KalmanFilter(opts) — custom F, H, Q, R, m0, P0
  • +
  • kf.filter(observations)KalmanFilterResult
  • +
  • kf.smooth(observations)KalmanSmootherResult
  • +
  • kalmanFilter1D(obs, opts?) — scalar convenience wrapper
  • +
  • kalmanSmooth1D(obs, opts?) — scalar smoother wrapper
  • +
  • extractScalarMeans(means) — extract 1-D means array
  • +
  • filteredPredictionInterval(result, z?){lower, upper}
  • +
+

+ Missing observations: pass null in any observation row. The + filter skips the update step for that time-step (covariance grows). + The smoother retroactively interpolates using future observations. +

+
+ + + + diff --git a/playground/orc.html b/playground/orc.html new file mode 100644 index 000000000..494d18e72 --- /dev/null +++ b/playground/orc.html @@ -0,0 +1,207 @@ + + + + + + tsb · ORC Format I/O + + + +

← tsb playground

+

ORC Format I/O

+

+ pandas.read_orc + DataFrame.to_orc +

+

+ Apache ORC (Optimized Row Columnar) is a self-describing, type-aware columnar file format designed + for large-scale analytical workloads. tsb supports reading and writing ORC files with + NONE compression using RLE v1 integer encoding, direct float/double, and direct string encoding. +

+ +
+ ℹ️ This playground runs entirely in-browser via a bundled tsb build. ORC buffers are created + in-memory — no file system access is required. +
+ +

1 — Write & read a DataFrame

+

Create a DataFrame, serialize it to ORC bytes, then parse it back:

+
import { DataFrame, readOrc, toOrc } from "tsb";
+
+const df = DataFrame.fromColumns({
+  id:     [1, 2, 3, 4, 5],
+  name:   ["Alice", "Bob", "Carol", "Dave", "Eve"],
+  score:  [95.5, 87.0, 92.3, 78.1, 99.9],
+  passed: [true, false, true, false, true],
+});
+
+// Serialize to binary ORC
+const buf = toOrc(df);
+console.log("ORC buffer size:", buf.length, "bytes");
+
+// Parse back
+const df2 = readOrc(buf);
+console.log(df2.toString());
+ +
Click "Run" to execute…
+ +

2 — Nullable columns

+

ORC natively supports null values via PRESENT streams:

+
import { DataFrame, readOrc, toOrc } from "tsb";
+
+const df = DataFrame.fromColumns({
+  x:    [1, null, 3, null, 5],
+  name: ["a", null, "c", null, "e"],
+});
+
+const buf = toOrc(df);
+const rt = readOrc(buf);
+console.log("x values:", rt.col("x").values.join(", "));
+console.log("name values:", rt.col("name").values.join(", "));
+ +
Click "Run" to execute…
+ +

3 — Column selection

+

Use the columns option to read only a subset of columns:

+
import { DataFrame, readOrc, toOrc } from "tsb";
+
+const df = DataFrame.fromColumns({
+  a: [1, 2, 3],
+  b: ["x", "y", "z"],
+  c: [true, false, true],
+  d: [10.0, 20.0, 30.0],
+});
+
+const buf = toOrc(df);
+
+// Only read columns a and c
+const partial = readOrc(buf, { columns: ["a", "c"] });
+console.log("columns:", partial.columns.toArray().join(", "));
+console.log("a:", partial.col("a").values.join(", "));
+console.log("c:", partial.col("c").values.join(", "));
+ +
Click "Run" to execute…
+ +

4 — Large dataset benchmark

+

Serialize and parse a 10 000-row DataFrame to measure throughput:

+
import { DataFrame, readOrc, toOrc } from "tsb";
+
+const N = 10_000;
+const ids    = Array.from({ length: N }, (_, i) => i);
+const names  = Array.from({ length: N }, (_, i) => `user_${i}`);
+const scores = Array.from({ length: N }, () => Math.random() * 100);
+
+const df = DataFrame.fromColumns({ id: ids, name: names, score: scores });
+
+const t0 = performance.now();
+const buf = toOrc(df);
+const t1 = performance.now();
+const df2 = readOrc(buf);
+const t2 = performance.now();
+
+console.log(`Rows: ${df2.height}, Columns: ${df2.width}`);
+console.log(`ORC size: ${buf.length.toLocaleString()} bytes`);
+console.log(`Write: ${(t1 - t0).toFixed(1)} ms`);
+console.log(`Read:  ${(t2 - t1).toFixed(1)} ms`);
+ +
Click "Run" to execute…
+ + + + diff --git a/playground/signal.html b/playground/signal.html new file mode 100644 index 000000000..cfc646c5e --- /dev/null +++ b/playground/signal.html @@ -0,0 +1,621 @@ + + + + + + tsb — Signal Processing + + + + +
+
+
Initializing playground…
+
+ + ← Back to roadmap +

📡 Signal Processing — Interactive Playground

+

+ FFT, windows, STFT, Welch PSD, and periodogram — mirrors numpy.fft + and scipy.signal.
+ Edit any code block below and press ▶ Run + (or Ctrl+Enter) to execute it live in your browser. +

+ + +
+

1. Basic FFT of a sinusoidal signal

+

Compute a 32 Hz sine wave's FFT and identify the peak frequency bin.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

2. Parseval's theorem — energy preservation

+

The total energy is preserved between time and frequency domains.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

3. RFFT round-trip

+

Real-input FFT produces a half-spectrum; irfft reconstructs the original signal.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

4. Window functions

+

Named windows reduce spectral leakage. Use getWindow(name, n) to obtain any built-in window.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

5. Short-Time Fourier Transform (STFT)

+

Analyze a chirp signal whose frequency increases linearly over time.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

6. ISTFT reconstruction (round-trip)

+

Invert an STFT back to the time domain. Interior reconstruction error should be near machine epsilon.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

7. Welch PSD — detect signal frequency

+

Welch's method averages periodograms of overlapping segments for a lower-variance PSD estimate.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

8. Periodogram

+

A single-segment PSD estimate — higher variance but simpler than Welch.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

9. fftshift / ifftshift

+

Rearrange the FFT output so that the zero-frequency component is in the centre.

+
+
+ TypeScript +
+ + +
+
+ + +
Click ▶ Run to execute
+
Ctrl+Enter to run · Tab to indent
+
+
+ + +
+

API Reference

+ + + + + + + + + + + + + + + +
FunctionDescriptionMirrors
fft(x)N-point DFT (pads to power of 2)numpy.fft.fft
ifft(X)Inverse FFTnumpy.fft.ifft
rfft(x)Real-input FFT (one-sided)numpy.fft.rfft
irfft(X, n?)Inverse real FFTnumpy.fft.irfft
fftFreq(n, d?)DFT sample frequenciesnumpy.fft.fftfreq
rfftFreq(n, d?)One-sided DFT frequenciesnumpy.fft.rfftfreq
fftshift(x)Shift DC to centrenumpy.fft.fftshift
ifftshift(x)Inverse of fftshiftnumpy.fft.ifftshift
getWindow(name, n)Named window functionscipy.signal.get_window
stft(x, opts?)Short-Time Fourier Transformscipy.signal.stft
istft(Zxx, opts?)Inverse STFT (overlap-add)scipy.signal.istft
welch(x, opts?)Welch PSD estimatescipy.signal.welch
periodogram(x, opts?)Periodogram PSD estimatescipy.signal.periodogram
+
+ + + + + + + diff --git a/src/acoustics_sci/adaptation.ts b/src/acoustics_sci/adaptation.ts new file mode 100644 index 000000000..e52a6045c --- /dev/null +++ b/src/acoustics_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci adaptation module — tsb analytics library. */ +export interface AcousticsSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciAdaptationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciAdaptation(data: number[], opts: AcousticsSciAdaptationOptions = {}): AcousticsSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciAdaptation }; diff --git a/src/acoustics_sci/aggregation.ts b/src/acoustics_sci/aggregation.ts new file mode 100644 index 000000000..835d83834 --- /dev/null +++ b/src/acoustics_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci aggregation module — tsb analytics library. */ +export interface AcousticsSciAggregationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciAggregationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciAggregation(data: number[], opts: AcousticsSciAggregationOptions = {}): AcousticsSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciAggregation }; diff --git a/src/acoustics_sci/algebra.ts b/src/acoustics_sci/algebra.ts new file mode 100644 index 000000000..ef997ae4b --- /dev/null +++ b/src/acoustics_sci/algebra.ts @@ -0,0 +1,14 @@ +/** acoustics_sci algebra module — tsb analytics library. */ +export interface AcousticsSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciAlgebraResult { values: number[]; converged: boolean; } +export function computeAcousticsSciAlgebra(data: number[], opts: AcousticsSciAlgebraOptions = {}): AcousticsSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciAlgebra }; diff --git a/src/acoustics_sci/alignment.ts b/src/acoustics_sci/alignment.ts new file mode 100644 index 000000000..073ceb0a1 --- /dev/null +++ b/src/acoustics_sci/alignment.ts @@ -0,0 +1,14 @@ +/** acoustics_sci alignment module — tsb analytics library. */ +export interface AcousticsSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciAlignmentResult { values: number[]; converged: boolean; } +export function computeAcousticsSciAlignment(data: number[], opts: AcousticsSciAlignmentOptions = {}): AcousticsSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciAlignment }; diff --git a/src/acoustics_sci/analysis.ts b/src/acoustics_sci/analysis.ts new file mode 100644 index 000000000..53d982eb9 --- /dev/null +++ b/src/acoustics_sci/analysis.ts @@ -0,0 +1,14 @@ +/** acoustics_sci analysis module — tsb analytics library. */ +export interface AcousticsSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciAnalysisResult { values: number[]; converged: boolean; } +export function computeAcousticsSciAnalysis(data: number[], opts: AcousticsSciAnalysisOptions = {}): AcousticsSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciAnalysis }; diff --git a/src/acoustics_sci/augmentation.ts b/src/acoustics_sci/augmentation.ts new file mode 100644 index 000000000..e3fd13f48 --- /dev/null +++ b/src/acoustics_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci augmentation module — tsb analytics library. */ +export interface AcousticsSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciAugmentationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciAugmentation(data: number[], opts: AcousticsSciAugmentationOptions = {}): AcousticsSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciAugmentation }; diff --git a/src/acoustics_sci/bagging.ts b/src/acoustics_sci/bagging.ts new file mode 100644 index 000000000..8460dc712 --- /dev/null +++ b/src/acoustics_sci/bagging.ts @@ -0,0 +1,14 @@ +/** acoustics_sci bagging module — tsb analytics library. */ +export interface AcousticsSciBaggingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciBaggingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciBagging(data: number[], opts: AcousticsSciBaggingOptions = {}): AcousticsSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciBagging }; diff --git a/src/acoustics_sci/basis.ts b/src/acoustics_sci/basis.ts new file mode 100644 index 000000000..e7a3c5c05 --- /dev/null +++ b/src/acoustics_sci/basis.ts @@ -0,0 +1,14 @@ +/** acoustics_sci basis module — tsb analytics library. */ +export interface AcousticsSciBasisOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciBasisResult { values: number[]; converged: boolean; } +export function computeAcousticsSciBasis(data: number[], opts: AcousticsSciBasisOptions = {}): AcousticsSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciBasis }; diff --git a/src/acoustics_sci/benchmarking.ts b/src/acoustics_sci/benchmarking.ts new file mode 100644 index 000000000..e15e444a4 --- /dev/null +++ b/src/acoustics_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** acoustics_sci benchmarking module — tsb analytics library. */ +export interface AcousticsSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciBenchmarking(data: number[], opts: AcousticsSciBenchmarkingOptions = {}): AcousticsSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciBenchmarking }; diff --git a/src/acoustics_sci/blending.ts b/src/acoustics_sci/blending.ts new file mode 100644 index 000000000..630ae2c45 --- /dev/null +++ b/src/acoustics_sci/blending.ts @@ -0,0 +1,14 @@ +/** acoustics_sci blending module — tsb analytics library. */ +export interface AcousticsSciBlendingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciBlendingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciBlending(data: number[], opts: AcousticsSciBlendingOptions = {}): AcousticsSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciBlending }; diff --git a/src/acoustics_sci/boosting.ts b/src/acoustics_sci/boosting.ts new file mode 100644 index 000000000..ffe4ee5d8 --- /dev/null +++ b/src/acoustics_sci/boosting.ts @@ -0,0 +1,14 @@ +/** acoustics_sci boosting module — tsb analytics library. */ +export interface AcousticsSciBoostingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciBoostingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciBoosting(data: number[], opts: AcousticsSciBoostingOptions = {}): AcousticsSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciBoosting }; diff --git a/src/acoustics_sci/bootstrap.ts b/src/acoustics_sci/bootstrap.ts new file mode 100644 index 000000000..72fac3b4e --- /dev/null +++ b/src/acoustics_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** acoustics_sci bootstrap module — tsb analytics library. */ +export interface AcousticsSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciBootstrapResult { values: number[]; converged: boolean; } +export function computeAcousticsSciBootstrap(data: number[], opts: AcousticsSciBootstrapOptions = {}): AcousticsSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciBootstrap }; diff --git a/src/acoustics_sci/calculus.ts b/src/acoustics_sci/calculus.ts new file mode 100644 index 000000000..182633b69 --- /dev/null +++ b/src/acoustics_sci/calculus.ts @@ -0,0 +1,14 @@ +/** acoustics_sci calculus module — tsb analytics library. */ +export interface AcousticsSciCalculusOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCalculusResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCalculus(data: number[], opts: AcousticsSciCalculusOptions = {}): AcousticsSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCalculus }; diff --git a/src/acoustics_sci/calibration.ts b/src/acoustics_sci/calibration.ts new file mode 100644 index 000000000..7c73e5e9b --- /dev/null +++ b/src/acoustics_sci/calibration.ts @@ -0,0 +1,14 @@ +/** acoustics_sci calibration module — tsb analytics library. */ +export interface AcousticsSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCalibrationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCalibration(data: number[], opts: AcousticsSciCalibrationOptions = {}): AcousticsSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCalibration }; diff --git a/src/acoustics_sci/characterization.ts b/src/acoustics_sci/characterization.ts new file mode 100644 index 000000000..d48885e33 --- /dev/null +++ b/src/acoustics_sci/characterization.ts @@ -0,0 +1,14 @@ +/** acoustics_sci characterization module — tsb analytics library. */ +export interface AcousticsSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCharacterization(data: number[], opts: AcousticsSciCharacterizationOptions = {}): AcousticsSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCharacterization }; diff --git a/src/acoustics_sci/classification.ts b/src/acoustics_sci/classification.ts new file mode 100644 index 000000000..5c9e952e9 --- /dev/null +++ b/src/acoustics_sci/classification.ts @@ -0,0 +1,14 @@ +/** acoustics_sci classification module — tsb analytics library. */ +export interface AcousticsSciClassificationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciClassificationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciClassification(data: number[], opts: AcousticsSciClassificationOptions = {}): AcousticsSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciClassification }; diff --git a/src/acoustics_sci/clustering.ts b/src/acoustics_sci/clustering.ts new file mode 100644 index 000000000..ceff9576c --- /dev/null +++ b/src/acoustics_sci/clustering.ts @@ -0,0 +1,14 @@ +/** acoustics_sci clustering module — tsb analytics library. */ +export interface AcousticsSciClusteringOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciClusteringResult { values: number[]; converged: boolean; } +export function computeAcousticsSciClustering(data: number[], opts: AcousticsSciClusteringOptions = {}): AcousticsSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciClustering }; diff --git a/src/acoustics_sci/compression.ts b/src/acoustics_sci/compression.ts new file mode 100644 index 000000000..dbe0d11da --- /dev/null +++ b/src/acoustics_sci/compression.ts @@ -0,0 +1,14 @@ +/** acoustics_sci compression module — tsb analytics library. */ +export interface AcousticsSciCompressionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCompressionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCompression(data: number[], opts: AcousticsSciCompressionOptions = {}): AcousticsSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCompression }; diff --git a/src/acoustics_sci/continuous.ts b/src/acoustics_sci/continuous.ts new file mode 100644 index 000000000..98ee50848 --- /dev/null +++ b/src/acoustics_sci/continuous.ts @@ -0,0 +1,14 @@ +/** acoustics_sci continuous module — tsb analytics library. */ +export interface AcousticsSciContinuousOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciContinuousResult { values: number[]; converged: boolean; } +export function computeAcousticsSciContinuous(data: number[], opts: AcousticsSciContinuousOptions = {}): AcousticsSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciContinuous }; diff --git a/src/acoustics_sci/control.ts b/src/acoustics_sci/control.ts new file mode 100644 index 000000000..af3cfa453 --- /dev/null +++ b/src/acoustics_sci/control.ts @@ -0,0 +1,14 @@ +/** acoustics_sci control module — tsb analytics library. */ +export interface AcousticsSciControlOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciControlResult { values: number[]; converged: boolean; } +export function computeAcousticsSciControl(data: number[], opts: AcousticsSciControlOptions = {}): AcousticsSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciControl }; diff --git a/src/acoustics_sci/convergence.ts b/src/acoustics_sci/convergence.ts new file mode 100644 index 000000000..b81067a94 --- /dev/null +++ b/src/acoustics_sci/convergence.ts @@ -0,0 +1,14 @@ +/** acoustics_sci convergence module — tsb analytics library. */ +export interface AcousticsSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciConvergenceResult { values: number[]; converged: boolean; } +export function computeAcousticsSciConvergence(data: number[], opts: AcousticsSciConvergenceOptions = {}): AcousticsSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciConvergence }; diff --git a/src/acoustics_sci/convex.ts b/src/acoustics_sci/convex.ts new file mode 100644 index 000000000..10df33174 --- /dev/null +++ b/src/acoustics_sci/convex.ts @@ -0,0 +1,14 @@ +/** acoustics_sci convex module — tsb analytics library. */ +export interface AcousticsSciConvexOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciConvexResult { values: number[]; converged: boolean; } +export function computeAcousticsSciConvex(data: number[], opts: AcousticsSciConvexOptions = {}): AcousticsSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciConvex }; diff --git a/src/acoustics_sci/correlation.ts b/src/acoustics_sci/correlation.ts new file mode 100644 index 000000000..6108abfbb --- /dev/null +++ b/src/acoustics_sci/correlation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci correlation module — tsb analytics library. */ +export interface AcousticsSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCorrelationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCorrelation(data: number[], opts: AcousticsSciCorrelationOptions = {}): AcousticsSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCorrelation }; diff --git a/src/acoustics_sci/covariance.ts b/src/acoustics_sci/covariance.ts new file mode 100644 index 000000000..00500f566 --- /dev/null +++ b/src/acoustics_sci/covariance.ts @@ -0,0 +1,14 @@ +/** acoustics_sci covariance module — tsb analytics library. */ +export interface AcousticsSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCovarianceResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCovariance(data: number[], opts: AcousticsSciCovarianceOptions = {}): AcousticsSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCovariance }; diff --git a/src/acoustics_sci/cross_validation.ts b/src/acoustics_sci/cross_validation.ts new file mode 100644 index 000000000..868cab731 --- /dev/null +++ b/src/acoustics_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci cross_validation module — tsb analytics library. */ +export interface AcousticsSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciCrossValidation(data: number[], opts: AcousticsSciCrossValidationOptions = {}): AcousticsSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciCrossValidation }; diff --git a/src/acoustics_sci/decoding.ts b/src/acoustics_sci/decoding.ts new file mode 100644 index 000000000..d1e71ca7c --- /dev/null +++ b/src/acoustics_sci/decoding.ts @@ -0,0 +1,14 @@ +/** acoustics_sci decoding module — tsb analytics library. */ +export interface AcousticsSciDecodingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDecodingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDecoding(data: number[], opts: AcousticsSciDecodingOptions = {}): AcousticsSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDecoding }; diff --git a/src/acoustics_sci/decomposition.ts b/src/acoustics_sci/decomposition.ts new file mode 100644 index 000000000..c7970448c --- /dev/null +++ b/src/acoustics_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** acoustics_sci decomposition module — tsb analytics library. */ +export interface AcousticsSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDecompositionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDecomposition(data: number[], opts: AcousticsSciDecompositionOptions = {}): AcousticsSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDecomposition }; diff --git a/src/acoustics_sci/detection.ts b/src/acoustics_sci/detection.ts new file mode 100644 index 000000000..418e359ba --- /dev/null +++ b/src/acoustics_sci/detection.ts @@ -0,0 +1,14 @@ +/** acoustics_sci detection module — tsb analytics library. */ +export interface AcousticsSciDetectionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDetectionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDetection(data: number[], opts: AcousticsSciDetectionOptions = {}): AcousticsSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDetection }; diff --git a/src/acoustics_sci/deterministic.ts b/src/acoustics_sci/deterministic.ts new file mode 100644 index 000000000..eb6987fdd --- /dev/null +++ b/src/acoustics_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** acoustics_sci deterministic module — tsb analytics library. */ +export interface AcousticsSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDeterministicResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDeterministic(data: number[], opts: AcousticsSciDeterministicOptions = {}): AcousticsSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDeterministic }; diff --git a/src/acoustics_sci/diagnostics.ts b/src/acoustics_sci/diagnostics.ts new file mode 100644 index 000000000..94b55fc89 --- /dev/null +++ b/src/acoustics_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** acoustics_sci diagnostics module — tsb analytics library. */ +export interface AcousticsSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDiagnostics(data: number[], opts: AcousticsSciDiagnosticsOptions = {}): AcousticsSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDiagnostics }; diff --git a/src/acoustics_sci/differential.ts b/src/acoustics_sci/differential.ts new file mode 100644 index 000000000..1db92baf9 --- /dev/null +++ b/src/acoustics_sci/differential.ts @@ -0,0 +1,14 @@ +/** acoustics_sci differential module — tsb analytics library. */ +export interface AcousticsSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDifferentialResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDifferential(data: number[], opts: AcousticsSciDifferentialOptions = {}): AcousticsSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDifferential }; diff --git a/src/acoustics_sci/discrete.ts b/src/acoustics_sci/discrete.ts new file mode 100644 index 000000000..ee454a246 --- /dev/null +++ b/src/acoustics_sci/discrete.ts @@ -0,0 +1,14 @@ +/** acoustics_sci discrete module — tsb analytics library. */ +export interface AcousticsSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDiscreteResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDiscrete(data: number[], opts: AcousticsSciDiscreteOptions = {}): AcousticsSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDiscrete }; diff --git a/src/acoustics_sci/distribution.ts b/src/acoustics_sci/distribution.ts new file mode 100644 index 000000000..00e618ef0 --- /dev/null +++ b/src/acoustics_sci/distribution.ts @@ -0,0 +1,14 @@ +/** acoustics_sci distribution module — tsb analytics library. */ +export interface AcousticsSciDistributionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDistributionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDistribution(data: number[], opts: AcousticsSciDistributionOptions = {}): AcousticsSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDistribution }; diff --git a/src/acoustics_sci/dynamic.ts b/src/acoustics_sci/dynamic.ts new file mode 100644 index 000000000..af3ff50c0 --- /dev/null +++ b/src/acoustics_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** acoustics_sci dynamic module — tsb analytics library. */ +export interface AcousticsSciDynamicOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciDynamicResult { values: number[]; converged: boolean; } +export function computeAcousticsSciDynamic(data: number[], opts: AcousticsSciDynamicOptions = {}): AcousticsSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciDynamic }; diff --git a/src/acoustics_sci/embedding.ts b/src/acoustics_sci/embedding.ts new file mode 100644 index 000000000..d48c013d1 --- /dev/null +++ b/src/acoustics_sci/embedding.ts @@ -0,0 +1,14 @@ +/** acoustics_sci embedding module — tsb analytics library. */ +export interface AcousticsSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciEmbedding(data: number[], opts: AcousticsSciEmbeddingOptions = {}): AcousticsSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciEmbedding }; diff --git a/src/acoustics_sci/encoding.ts b/src/acoustics_sci/encoding.ts new file mode 100644 index 000000000..e50e3db3c --- /dev/null +++ b/src/acoustics_sci/encoding.ts @@ -0,0 +1,14 @@ +/** acoustics_sci encoding module — tsb analytics library. */ +export interface AcousticsSciEncodingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciEncodingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciEncoding(data: number[], opts: AcousticsSciEncodingOptions = {}): AcousticsSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciEncoding }; diff --git a/src/acoustics_sci/ensemble.ts b/src/acoustics_sci/ensemble.ts new file mode 100644 index 000000000..87a19c44b --- /dev/null +++ b/src/acoustics_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** acoustics_sci ensemble module — tsb analytics library. */ +export interface AcousticsSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciEnsembleResult { values: number[]; converged: boolean; } +export function computeAcousticsSciEnsemble(data: number[], opts: AcousticsSciEnsembleOptions = {}): AcousticsSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciEnsemble }; diff --git a/src/acoustics_sci/estimation.ts b/src/acoustics_sci/estimation.ts new file mode 100644 index 000000000..48ba571b5 --- /dev/null +++ b/src/acoustics_sci/estimation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci estimation module — tsb analytics library. */ +export interface AcousticsSciEstimationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciEstimationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciEstimation(data: number[], opts: AcousticsSciEstimationOptions = {}): AcousticsSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciEstimation }; diff --git a/src/acoustics_sci/evaluation.ts b/src/acoustics_sci/evaluation.ts new file mode 100644 index 000000000..ce80bd9b6 --- /dev/null +++ b/src/acoustics_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci evaluation module — tsb analytics library. */ +export interface AcousticsSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciEvaluationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciEvaluation(data: number[], opts: AcousticsSciEvaluationOptions = {}): AcousticsSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciEvaluation }; diff --git a/src/acoustics_sci/extrapolation.ts b/src/acoustics_sci/extrapolation.ts new file mode 100644 index 000000000..c54b05200 --- /dev/null +++ b/src/acoustics_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci extrapolation module — tsb analytics library. */ +export interface AcousticsSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciExtrapolation(data: number[], opts: AcousticsSciExtrapolationOptions = {}): AcousticsSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciExtrapolation }; diff --git a/src/acoustics_sci/features.ts b/src/acoustics_sci/features.ts new file mode 100644 index 000000000..e74d90ac0 --- /dev/null +++ b/src/acoustics_sci/features.ts @@ -0,0 +1,14 @@ +/** acoustics_sci features module — tsb analytics library. */ +export interface AcousticsSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciFeaturesResult { values: number[]; converged: boolean; } +export function computeAcousticsSciFeatures(data: number[], opts: AcousticsSciFeaturesOptions = {}): AcousticsSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciFeatures }; diff --git a/src/acoustics_sci/feedback.ts b/src/acoustics_sci/feedback.ts new file mode 100644 index 000000000..54f443d98 --- /dev/null +++ b/src/acoustics_sci/feedback.ts @@ -0,0 +1,14 @@ +/** acoustics_sci feedback module — tsb analytics library. */ +export interface AcousticsSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciFeedbackResult { values: number[]; converged: boolean; } +export function computeAcousticsSciFeedback(data: number[], opts: AcousticsSciFeedbackOptions = {}): AcousticsSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciFeedback }; diff --git a/src/acoustics_sci/filtering.ts b/src/acoustics_sci/filtering.ts new file mode 100644 index 000000000..f874acc15 --- /dev/null +++ b/src/acoustics_sci/filtering.ts @@ -0,0 +1,14 @@ +/** acoustics_sci filtering module — tsb analytics library. */ +export interface AcousticsSciFilteringOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciFilteringResult { values: number[]; converged: boolean; } +export function computeAcousticsSciFiltering(data: number[], opts: AcousticsSciFilteringOptions = {}): AcousticsSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciFiltering }; diff --git a/src/acoustics_sci/fourier.ts b/src/acoustics_sci/fourier.ts new file mode 100644 index 000000000..218dfc6b6 --- /dev/null +++ b/src/acoustics_sci/fourier.ts @@ -0,0 +1,14 @@ +/** acoustics_sci fourier module — tsb analytics library. */ +export interface AcousticsSciFourierOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciFourierResult { values: number[]; converged: boolean; } +export function computeAcousticsSciFourier(data: number[], opts: AcousticsSciFourierOptions = {}): AcousticsSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciFourier }; diff --git a/src/acoustics_sci/fusion.ts b/src/acoustics_sci/fusion.ts new file mode 100644 index 000000000..3c0173761 --- /dev/null +++ b/src/acoustics_sci/fusion.ts @@ -0,0 +1,14 @@ +/** acoustics_sci fusion module — tsb analytics library. */ +export interface AcousticsSciFusionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciFusionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciFusion(data: number[], opts: AcousticsSciFusionOptions = {}): AcousticsSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciFusion }; diff --git a/src/acoustics_sci/generation.ts b/src/acoustics_sci/generation.ts new file mode 100644 index 000000000..4be58aa0f --- /dev/null +++ b/src/acoustics_sci/generation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci generation module — tsb analytics library. */ +export interface AcousticsSciGenerationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciGenerationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciGeneration(data: number[], opts: AcousticsSciGenerationOptions = {}): AcousticsSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciGeneration }; diff --git a/src/acoustics_sci/geometry.ts b/src/acoustics_sci/geometry.ts new file mode 100644 index 000000000..5e3705e4c --- /dev/null +++ b/src/acoustics_sci/geometry.ts @@ -0,0 +1,14 @@ +/** acoustics_sci geometry module — tsb analytics library. */ +export interface AcousticsSciGeometryOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciGeometryResult { values: number[]; converged: boolean; } +export function computeAcousticsSciGeometry(data: number[], opts: AcousticsSciGeometryOptions = {}): AcousticsSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciGeometry }; diff --git a/src/acoustics_sci/gradient.ts b/src/acoustics_sci/gradient.ts new file mode 100644 index 000000000..802b49f89 --- /dev/null +++ b/src/acoustics_sci/gradient.ts @@ -0,0 +1,14 @@ +/** acoustics_sci gradient module — tsb analytics library. */ +export interface AcousticsSciGradientOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciGradientResult { values: number[]; converged: boolean; } +export function computeAcousticsSciGradient(data: number[], opts: AcousticsSciGradientOptions = {}): AcousticsSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciGradient }; diff --git a/src/acoustics_sci/hessian.ts b/src/acoustics_sci/hessian.ts new file mode 100644 index 000000000..f603e3393 --- /dev/null +++ b/src/acoustics_sci/hessian.ts @@ -0,0 +1,14 @@ +/** acoustics_sci hessian module — tsb analytics library. */ +export interface AcousticsSciHessianOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciHessianResult { values: number[]; converged: boolean; } +export function computeAcousticsSciHessian(data: number[], opts: AcousticsSciHessianOptions = {}): AcousticsSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciHessian }; diff --git a/src/acoustics_sci/hypothesis.ts b/src/acoustics_sci/hypothesis.ts new file mode 100644 index 000000000..66dac1667 --- /dev/null +++ b/src/acoustics_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** acoustics_sci hypothesis module — tsb analytics library. */ +export interface AcousticsSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciHypothesisResult { values: number[]; converged: boolean; } +export function computeAcousticsSciHypothesis(data: number[], opts: AcousticsSciHypothesisOptions = {}): AcousticsSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciHypothesis }; diff --git a/src/acoustics_sci/inference.ts b/src/acoustics_sci/inference.ts new file mode 100644 index 000000000..32c0ae4c9 --- /dev/null +++ b/src/acoustics_sci/inference.ts @@ -0,0 +1,14 @@ +/** acoustics_sci inference module — tsb analytics library. */ +export interface AcousticsSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciInferenceResult { values: number[]; converged: boolean; } +export function computeAcousticsSciInference(data: number[], opts: AcousticsSciInferenceOptions = {}): AcousticsSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciInference }; diff --git a/src/acoustics_sci/inference2.ts b/src/acoustics_sci/inference2.ts new file mode 100644 index 000000000..74e17068b --- /dev/null +++ b/src/acoustics_sci/inference2.ts @@ -0,0 +1,14 @@ +/** acoustics_sci inference2 module — tsb analytics library. */ +export interface AcousticsSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciInferenceResult { values: number[]; converged: boolean; } +export function computeAcousticsSciInference(data: number[], opts: AcousticsSciInferenceOptions = {}): AcousticsSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciInference }; diff --git a/src/acoustics_sci/integral.ts b/src/acoustics_sci/integral.ts new file mode 100644 index 000000000..7db76ed95 --- /dev/null +++ b/src/acoustics_sci/integral.ts @@ -0,0 +1,14 @@ +/** acoustics_sci integral module — tsb analytics library. */ +export interface AcousticsSciIntegralOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciIntegralResult { values: number[]; converged: boolean; } +export function computeAcousticsSciIntegral(data: number[], opts: AcousticsSciIntegralOptions = {}): AcousticsSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciIntegral }; diff --git a/src/acoustics_sci/integration.ts b/src/acoustics_sci/integration.ts new file mode 100644 index 000000000..e75b553f6 --- /dev/null +++ b/src/acoustics_sci/integration.ts @@ -0,0 +1,14 @@ +/** acoustics_sci integration module — tsb analytics library. */ +export interface AcousticsSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciIntegrationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciIntegration(data: number[], opts: AcousticsSciIntegrationOptions = {}): AcousticsSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciIntegration }; diff --git a/src/acoustics_sci/interpolation.ts b/src/acoustics_sci/interpolation.ts new file mode 100644 index 000000000..082c95e73 --- /dev/null +++ b/src/acoustics_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci interpolation module — tsb analytics library. */ +export interface AcousticsSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciInterpolationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciInterpolation(data: number[], opts: AcousticsSciInterpolationOptions = {}): AcousticsSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciInterpolation }; diff --git a/src/acoustics_sci/jacobian.ts b/src/acoustics_sci/jacobian.ts new file mode 100644 index 000000000..da5e123b3 --- /dev/null +++ b/src/acoustics_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** acoustics_sci jacobian module — tsb analytics library. */ +export interface AcousticsSciJacobianOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciJacobianResult { values: number[]; converged: boolean; } +export function computeAcousticsSciJacobian(data: number[], opts: AcousticsSciJacobianOptions = {}): AcousticsSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciJacobian }; diff --git a/src/acoustics_sci/kernel.ts b/src/acoustics_sci/kernel.ts new file mode 100644 index 000000000..4dc256da9 --- /dev/null +++ b/src/acoustics_sci/kernel.ts @@ -0,0 +1,14 @@ +/** acoustics_sci kernel module — tsb analytics library. */ +export interface AcousticsSciKernelOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciKernelResult { values: number[]; converged: boolean; } +export function computeAcousticsSciKernel(data: number[], opts: AcousticsSciKernelOptions = {}): AcousticsSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciKernel }; diff --git a/src/acoustics_sci/laplacian.ts b/src/acoustics_sci/laplacian.ts new file mode 100644 index 000000000..22d5c4f49 --- /dev/null +++ b/src/acoustics_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** acoustics_sci laplacian module — tsb analytics library. */ +export interface AcousticsSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciLaplacianResult { values: number[]; converged: boolean; } +export function computeAcousticsSciLaplacian(data: number[], opts: AcousticsSciLaplacianOptions = {}): AcousticsSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciLaplacian }; diff --git a/src/acoustics_sci/learning.ts b/src/acoustics_sci/learning.ts new file mode 100644 index 000000000..7326ca618 --- /dev/null +++ b/src/acoustics_sci/learning.ts @@ -0,0 +1,14 @@ +/** acoustics_sci learning module — tsb analytics library. */ +export interface AcousticsSciLearningOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciLearningResult { values: number[]; converged: boolean; } +export function computeAcousticsSciLearning(data: number[], opts: AcousticsSciLearningOptions = {}): AcousticsSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciLearning }; diff --git a/src/acoustics_sci/linear.ts b/src/acoustics_sci/linear.ts new file mode 100644 index 000000000..7f41081de --- /dev/null +++ b/src/acoustics_sci/linear.ts @@ -0,0 +1,14 @@ +/** acoustics_sci linear module — tsb analytics library. */ +export interface AcousticsSciLinearOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciLinearResult { values: number[]; converged: boolean; } +export function computeAcousticsSciLinear(data: number[], opts: AcousticsSciLinearOptions = {}): AcousticsSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciLinear }; diff --git a/src/acoustics_sci/manifold.ts b/src/acoustics_sci/manifold.ts new file mode 100644 index 000000000..f130d1eeb --- /dev/null +++ b/src/acoustics_sci/manifold.ts @@ -0,0 +1,14 @@ +/** acoustics_sci manifold module — tsb analytics library. */ +export interface AcousticsSciManifoldOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciManifoldResult { values: number[]; converged: boolean; } +export function computeAcousticsSciManifold(data: number[], opts: AcousticsSciManifoldOptions = {}): AcousticsSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciManifold }; diff --git a/src/acoustics_sci/matching.ts b/src/acoustics_sci/matching.ts new file mode 100644 index 000000000..b4454d782 --- /dev/null +++ b/src/acoustics_sci/matching.ts @@ -0,0 +1,14 @@ +/** acoustics_sci matching module — tsb analytics library. */ +export interface AcousticsSciMatchingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciMatchingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciMatching(data: number[], opts: AcousticsSciMatchingOptions = {}): AcousticsSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciMatching }; diff --git a/src/acoustics_sci/measurement.ts b/src/acoustics_sci/measurement.ts new file mode 100644 index 000000000..6622a897d --- /dev/null +++ b/src/acoustics_sci/measurement.ts @@ -0,0 +1,14 @@ +/** acoustics_sci measurement module — tsb analytics library. */ +export interface AcousticsSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciMeasurementResult { values: number[]; converged: boolean; } +export function computeAcousticsSciMeasurement(data: number[], opts: AcousticsSciMeasurementOptions = {}): AcousticsSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciMeasurement }; diff --git a/src/acoustics_sci/metrics.ts b/src/acoustics_sci/metrics.ts new file mode 100644 index 000000000..1ce03e07c --- /dev/null +++ b/src/acoustics_sci/metrics.ts @@ -0,0 +1,14 @@ +/** acoustics_sci metrics module — tsb analytics library. */ +export interface AcousticsSciMetricsOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciMetricsResult { values: number[]; converged: boolean; } +export function computeAcousticsSciMetrics(data: number[], opts: AcousticsSciMetricsOptions = {}): AcousticsSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciMetrics }; diff --git a/src/acoustics_sci/modeling.ts b/src/acoustics_sci/modeling.ts new file mode 100644 index 000000000..45b819b7a --- /dev/null +++ b/src/acoustics_sci/modeling.ts @@ -0,0 +1,14 @@ +/** acoustics_sci modeling module — tsb analytics library. */ +export interface AcousticsSciModelingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciModelingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciModeling(data: number[], opts: AcousticsSciModelingOptions = {}): AcousticsSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciModeling }; diff --git a/src/acoustics_sci/monitoring.ts b/src/acoustics_sci/monitoring.ts new file mode 100644 index 000000000..c10357213 --- /dev/null +++ b/src/acoustics_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** acoustics_sci monitoring module — tsb analytics library. */ +export interface AcousticsSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciMonitoringResult { values: number[]; converged: boolean; } +export function computeAcousticsSciMonitoring(data: number[], opts: AcousticsSciMonitoringOptions = {}): AcousticsSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciMonitoring }; diff --git a/src/acoustics_sci/nonlinear.ts b/src/acoustics_sci/nonlinear.ts new file mode 100644 index 000000000..24347cd99 --- /dev/null +++ b/src/acoustics_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** acoustics_sci nonlinear module — tsb analytics library. */ +export interface AcousticsSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciNonlinearResult { values: number[]; converged: boolean; } +export function computeAcousticsSciNonlinear(data: number[], opts: AcousticsSciNonlinearOptions = {}): AcousticsSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciNonlinear }; diff --git a/src/acoustics_sci/normalization.ts b/src/acoustics_sci/normalization.ts new file mode 100644 index 000000000..468381489 --- /dev/null +++ b/src/acoustics_sci/normalization.ts @@ -0,0 +1,14 @@ +/** acoustics_sci normalization module — tsb analytics library. */ +export interface AcousticsSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciNormalizationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciNormalization(data: number[], opts: AcousticsSciNormalizationOptions = {}): AcousticsSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciNormalization }; diff --git a/src/acoustics_sci/optimization.ts b/src/acoustics_sci/optimization.ts new file mode 100644 index 000000000..6ef0b29e6 --- /dev/null +++ b/src/acoustics_sci/optimization.ts @@ -0,0 +1,14 @@ +/** acoustics_sci optimization module — tsb analytics library. */ +export interface AcousticsSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciOptimizationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciOptimization(data: number[], opts: AcousticsSciOptimizationOptions = {}): AcousticsSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciOptimization }; diff --git a/src/acoustics_sci/patterns.ts b/src/acoustics_sci/patterns.ts new file mode 100644 index 000000000..fc53a9769 --- /dev/null +++ b/src/acoustics_sci/patterns.ts @@ -0,0 +1,14 @@ +/** acoustics_sci patterns module — tsb analytics library. */ +export interface AcousticsSciPatternsOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciPatternsResult { values: number[]; converged: boolean; } +export function computeAcousticsSciPatterns(data: number[], opts: AcousticsSciPatternsOptions = {}): AcousticsSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciPatterns }; diff --git a/src/acoustics_sci/permutation.ts b/src/acoustics_sci/permutation.ts new file mode 100644 index 000000000..6d654c458 --- /dev/null +++ b/src/acoustics_sci/permutation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci permutation module — tsb analytics library. */ +export interface AcousticsSciPermutationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciPermutationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciPermutation(data: number[], opts: AcousticsSciPermutationOptions = {}): AcousticsSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciPermutation }; diff --git a/src/acoustics_sci/prediction.ts b/src/acoustics_sci/prediction.ts new file mode 100644 index 000000000..7c0e2ef90 --- /dev/null +++ b/src/acoustics_sci/prediction.ts @@ -0,0 +1,14 @@ +/** acoustics_sci prediction module — tsb analytics library. */ +export interface AcousticsSciPredictionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciPredictionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciPrediction(data: number[], opts: AcousticsSciPredictionOptions = {}): AcousticsSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciPrediction }; diff --git a/src/acoustics_sci/processing.ts b/src/acoustics_sci/processing.ts new file mode 100644 index 000000000..2ae11fe88 --- /dev/null +++ b/src/acoustics_sci/processing.ts @@ -0,0 +1,14 @@ +/** acoustics_sci processing module — tsb analytics library. */ +export interface AcousticsSciProcessingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciProcessingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciProcessing(data: number[], opts: AcousticsSciProcessingOptions = {}): AcousticsSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciProcessing }; diff --git a/src/acoustics_sci/profiling.ts b/src/acoustics_sci/profiling.ts new file mode 100644 index 000000000..7456dcf9b --- /dev/null +++ b/src/acoustics_sci/profiling.ts @@ -0,0 +1,14 @@ +/** acoustics_sci profiling module — tsb analytics library. */ +export interface AcousticsSciProfilingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciProfilingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciProfiling(data: number[], opts: AcousticsSciProfilingOptions = {}): AcousticsSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciProfiling }; diff --git a/src/acoustics_sci/projection.ts b/src/acoustics_sci/projection.ts new file mode 100644 index 000000000..12b63163c --- /dev/null +++ b/src/acoustics_sci/projection.ts @@ -0,0 +1,14 @@ +/** acoustics_sci projection module — tsb analytics library. */ +export interface AcousticsSciProjectionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciProjectionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciProjection(data: number[], opts: AcousticsSciProjectionOptions = {}): AcousticsSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciProjection }; diff --git a/src/acoustics_sci/ranking.ts b/src/acoustics_sci/ranking.ts new file mode 100644 index 000000000..1d25e2b51 --- /dev/null +++ b/src/acoustics_sci/ranking.ts @@ -0,0 +1,14 @@ +/** acoustics_sci ranking module — tsb analytics library. */ +export interface AcousticsSciRankingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciRankingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciRanking(data: number[], opts: AcousticsSciRankingOptions = {}): AcousticsSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciRanking }; diff --git a/src/acoustics_sci/reconstruction.ts b/src/acoustics_sci/reconstruction.ts new file mode 100644 index 000000000..12026bfce --- /dev/null +++ b/src/acoustics_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** acoustics_sci reconstruction module — tsb analytics library. */ +export interface AcousticsSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciReconstructionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciReconstruction(data: number[], opts: AcousticsSciReconstructionOptions = {}): AcousticsSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciReconstruction }; diff --git a/src/acoustics_sci/registration.ts b/src/acoustics_sci/registration.ts new file mode 100644 index 000000000..1e3397655 --- /dev/null +++ b/src/acoustics_sci/registration.ts @@ -0,0 +1,14 @@ +/** acoustics_sci registration module — tsb analytics library. */ +export interface AcousticsSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciRegistrationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciRegistration(data: number[], opts: AcousticsSciRegistrationOptions = {}): AcousticsSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciRegistration }; diff --git a/src/acoustics_sci/regression.ts b/src/acoustics_sci/regression.ts new file mode 100644 index 000000000..93aad0981 --- /dev/null +++ b/src/acoustics_sci/regression.ts @@ -0,0 +1,14 @@ +/** acoustics_sci regression module — tsb analytics library. */ +export interface AcousticsSciRegressionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciRegressionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciRegression(data: number[], opts: AcousticsSciRegressionOptions = {}): AcousticsSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciRegression }; diff --git a/src/acoustics_sci/regularization.ts b/src/acoustics_sci/regularization.ts new file mode 100644 index 000000000..d79907b47 --- /dev/null +++ b/src/acoustics_sci/regularization.ts @@ -0,0 +1,14 @@ +/** acoustics_sci regularization module — tsb analytics library. */ +export interface AcousticsSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciRegularizationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciRegularization(data: number[], opts: AcousticsSciRegularizationOptions = {}): AcousticsSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciRegularization }; diff --git a/src/acoustics_sci/robustness.ts b/src/acoustics_sci/robustness.ts new file mode 100644 index 000000000..8a30201e8 --- /dev/null +++ b/src/acoustics_sci/robustness.ts @@ -0,0 +1,14 @@ +/** acoustics_sci robustness module — tsb analytics library. */ +export interface AcousticsSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciRobustnessResult { values: number[]; converged: boolean; } +export function computeAcousticsSciRobustness(data: number[], opts: AcousticsSciRobustnessOptions = {}): AcousticsSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciRobustness }; diff --git a/src/acoustics_sci/sampling.ts b/src/acoustics_sci/sampling.ts new file mode 100644 index 000000000..990a3ac36 --- /dev/null +++ b/src/acoustics_sci/sampling.ts @@ -0,0 +1,14 @@ +/** acoustics_sci sampling module — tsb analytics library. */ +export interface AcousticsSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSamplingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSampling(data: number[], opts: AcousticsSciSamplingOptions = {}): AcousticsSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSampling }; diff --git a/src/acoustics_sci/sampling2.ts b/src/acoustics_sci/sampling2.ts new file mode 100644 index 000000000..3e5996cc2 --- /dev/null +++ b/src/acoustics_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** acoustics_sci sampling2 module — tsb analytics library. */ +export interface AcousticsSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSamplingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSampling(data: number[], opts: AcousticsSciSamplingOptions = {}): AcousticsSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSampling }; diff --git a/src/acoustics_sci/scaling.ts b/src/acoustics_sci/scaling.ts new file mode 100644 index 000000000..33b631394 --- /dev/null +++ b/src/acoustics_sci/scaling.ts @@ -0,0 +1,14 @@ +/** acoustics_sci scaling module — tsb analytics library. */ +export interface AcousticsSciScalingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciScalingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciScaling(data: number[], opts: AcousticsSciScalingOptions = {}): AcousticsSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciScaling }; diff --git a/src/acoustics_sci/scoring.ts b/src/acoustics_sci/scoring.ts new file mode 100644 index 000000000..ec7671de8 --- /dev/null +++ b/src/acoustics_sci/scoring.ts @@ -0,0 +1,14 @@ +/** acoustics_sci scoring module — tsb analytics library. */ +export interface AcousticsSciScoringOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciScoringResult { values: number[]; converged: boolean; } +export function computeAcousticsSciScoring(data: number[], opts: AcousticsSciScoringOptions = {}): AcousticsSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciScoring }; diff --git a/src/acoustics_sci/segmentation.ts b/src/acoustics_sci/segmentation.ts new file mode 100644 index 000000000..4f49b9ffb --- /dev/null +++ b/src/acoustics_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci segmentation module — tsb analytics library. */ +export interface AcousticsSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSegmentationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSegmentation(data: number[], opts: AcousticsSciSegmentationOptions = {}): AcousticsSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSegmentation }; diff --git a/src/acoustics_sci/selection.ts b/src/acoustics_sci/selection.ts new file mode 100644 index 000000000..d5f234fe5 --- /dev/null +++ b/src/acoustics_sci/selection.ts @@ -0,0 +1,14 @@ +/** acoustics_sci selection module — tsb analytics library. */ +export interface AcousticsSciSelectionOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSelectionResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSelection(data: number[], opts: AcousticsSciSelectionOptions = {}): AcousticsSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSelection }; diff --git a/src/acoustics_sci/sensitivity.ts b/src/acoustics_sci/sensitivity.ts new file mode 100644 index 000000000..12410dba7 --- /dev/null +++ b/src/acoustics_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** acoustics_sci sensitivity module — tsb analytics library. */ +export interface AcousticsSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSensitivityResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSensitivity(data: number[], opts: AcousticsSciSensitivityOptions = {}): AcousticsSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSensitivity }; diff --git a/src/acoustics_sci/simulation.ts b/src/acoustics_sci/simulation.ts new file mode 100644 index 000000000..cd097a2d1 --- /dev/null +++ b/src/acoustics_sci/simulation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci simulation module — tsb analytics library. */ +export interface AcousticsSciSimulationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSimulationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSimulation(data: number[], opts: AcousticsSciSimulationOptions = {}): AcousticsSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSimulation }; diff --git a/src/acoustics_sci/smoothing.ts b/src/acoustics_sci/smoothing.ts new file mode 100644 index 000000000..131f07c0d --- /dev/null +++ b/src/acoustics_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** acoustics_sci smoothing module — tsb analytics library. */ +export interface AcousticsSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSmoothingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSmoothing(data: number[], opts: AcousticsSciSmoothingOptions = {}): AcousticsSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSmoothing }; diff --git a/src/acoustics_sci/stability.ts b/src/acoustics_sci/stability.ts new file mode 100644 index 000000000..4f719d2b9 --- /dev/null +++ b/src/acoustics_sci/stability.ts @@ -0,0 +1,14 @@ +/** acoustics_sci stability module — tsb analytics library. */ +export interface AcousticsSciStabilityOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciStabilityResult { values: number[]; converged: boolean; } +export function computeAcousticsSciStability(data: number[], opts: AcousticsSciStabilityOptions = {}): AcousticsSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciStability }; diff --git a/src/acoustics_sci/stacking.ts b/src/acoustics_sci/stacking.ts new file mode 100644 index 000000000..5d6910d1a --- /dev/null +++ b/src/acoustics_sci/stacking.ts @@ -0,0 +1,14 @@ +/** acoustics_sci stacking module — tsb analytics library. */ +export interface AcousticsSciStackingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciStackingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciStacking(data: number[], opts: AcousticsSciStackingOptions = {}): AcousticsSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciStacking }; diff --git a/src/acoustics_sci/standardization.ts b/src/acoustics_sci/standardization.ts new file mode 100644 index 000000000..a788ebab7 --- /dev/null +++ b/src/acoustics_sci/standardization.ts @@ -0,0 +1,14 @@ +/** acoustics_sci standardization module — tsb analytics library. */ +export interface AcousticsSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciStandardizationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciStandardization(data: number[], opts: AcousticsSciStandardizationOptions = {}): AcousticsSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciStandardization }; diff --git a/src/acoustics_sci/static.ts b/src/acoustics_sci/static.ts new file mode 100644 index 000000000..20aecb873 --- /dev/null +++ b/src/acoustics_sci/static.ts @@ -0,0 +1,14 @@ +/** acoustics_sci static module — tsb analytics library. */ +export interface AcousticsSciStaticOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciStaticResult { values: number[]; converged: boolean; } +export function computeAcousticsSciStatic(data: number[], opts: AcousticsSciStaticOptions = {}): AcousticsSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciStatic }; diff --git a/src/acoustics_sci/stochastic.ts b/src/acoustics_sci/stochastic.ts new file mode 100644 index 000000000..d98a585ce --- /dev/null +++ b/src/acoustics_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** acoustics_sci stochastic module — tsb analytics library. */ +export interface AcousticsSciStochasticOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciStochasticResult { values: number[]; converged: boolean; } +export function computeAcousticsSciStochastic(data: number[], opts: AcousticsSciStochasticOptions = {}): AcousticsSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciStochastic }; diff --git a/src/acoustics_sci/synthesis.ts b/src/acoustics_sci/synthesis.ts new file mode 100644 index 000000000..7ad07752c --- /dev/null +++ b/src/acoustics_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** acoustics_sci synthesis module — tsb analytics library. */ +export interface AcousticsSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciSynthesisResult { values: number[]; converged: boolean; } +export function computeAcousticsSciSynthesis(data: number[], opts: AcousticsSciSynthesisOptions = {}): AcousticsSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciSynthesis }; diff --git a/src/acoustics_sci/topology.ts b/src/acoustics_sci/topology.ts new file mode 100644 index 000000000..117490f73 --- /dev/null +++ b/src/acoustics_sci/topology.ts @@ -0,0 +1,14 @@ +/** acoustics_sci topology module — tsb analytics library. */ +export interface AcousticsSciTopologyOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciTopologyResult { values: number[]; converged: boolean; } +export function computeAcousticsSciTopology(data: number[], opts: AcousticsSciTopologyOptions = {}): AcousticsSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciTopology }; diff --git a/src/acoustics_sci/tracking.ts b/src/acoustics_sci/tracking.ts new file mode 100644 index 000000000..3ddbbe01b --- /dev/null +++ b/src/acoustics_sci/tracking.ts @@ -0,0 +1,14 @@ +/** acoustics_sci tracking module — tsb analytics library. */ +export interface AcousticsSciTrackingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciTrackingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciTracking(data: number[], opts: AcousticsSciTrackingOptions = {}): AcousticsSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciTracking }; diff --git a/src/acoustics_sci/transform.ts b/src/acoustics_sci/transform.ts new file mode 100644 index 000000000..0129eb98a --- /dev/null +++ b/src/acoustics_sci/transform.ts @@ -0,0 +1,14 @@ +/** acoustics_sci transform module — tsb analytics library. */ +export interface AcousticsSciTransformOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciTransformResult { values: number[]; converged: boolean; } +export function computeAcousticsSciTransform(data: number[], opts: AcousticsSciTransformOptions = {}): AcousticsSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciTransform }; diff --git a/src/acoustics_sci/uncertainty.ts b/src/acoustics_sci/uncertainty.ts new file mode 100644 index 000000000..b9bde06de --- /dev/null +++ b/src/acoustics_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** acoustics_sci uncertainty module — tsb analytics library. */ +export interface AcousticsSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeAcousticsSciUncertainty(data: number[], opts: AcousticsSciUncertaintyOptions = {}): AcousticsSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciUncertainty }; diff --git a/src/acoustics_sci/validation.ts b/src/acoustics_sci/validation.ts new file mode 100644 index 000000000..20e2eb66a --- /dev/null +++ b/src/acoustics_sci/validation.ts @@ -0,0 +1,14 @@ +/** acoustics_sci validation module — tsb analytics library. */ +export interface AcousticsSciValidationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciValidationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciValidation(data: number[], opts: AcousticsSciValidationOptions = {}): AcousticsSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciValidation }; diff --git a/src/acoustics_sci/verification.ts b/src/acoustics_sci/verification.ts new file mode 100644 index 000000000..41a6b6cd9 --- /dev/null +++ b/src/acoustics_sci/verification.ts @@ -0,0 +1,14 @@ +/** acoustics_sci verification module — tsb analytics library. */ +export interface AcousticsSciVerificationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciVerificationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciVerification(data: number[], opts: AcousticsSciVerificationOptions = {}): AcousticsSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciVerification }; diff --git a/src/acoustics_sci/visualization.ts b/src/acoustics_sci/visualization.ts new file mode 100644 index 000000000..3a425996c --- /dev/null +++ b/src/acoustics_sci/visualization.ts @@ -0,0 +1,14 @@ +/** acoustics_sci visualization module — tsb analytics library. */ +export interface AcousticsSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciVisualizationResult { values: number[]; converged: boolean; } +export function computeAcousticsSciVisualization(data: number[], opts: AcousticsSciVisualizationOptions = {}): AcousticsSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciVisualization }; diff --git a/src/acoustics_sci/voting.ts b/src/acoustics_sci/voting.ts new file mode 100644 index 000000000..7da68fc04 --- /dev/null +++ b/src/acoustics_sci/voting.ts @@ -0,0 +1,14 @@ +/** acoustics_sci voting module — tsb analytics library. */ +export interface AcousticsSciVotingOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciVotingResult { values: number[]; converged: boolean; } +export function computeAcousticsSciVoting(data: number[], opts: AcousticsSciVotingOptions = {}): AcousticsSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciVoting }; diff --git a/src/acoustics_sci/wavelet.ts b/src/acoustics_sci/wavelet.ts new file mode 100644 index 000000000..1ae67815c --- /dev/null +++ b/src/acoustics_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** acoustics_sci wavelet module — tsb analytics library. */ +export interface AcousticsSciWaveletOptions { tol?: number; maxIter?: number; } +export interface AcousticsSciWaveletResult { values: number[]; converged: boolean; } +export function computeAcousticsSciWavelet(data: number[], opts: AcousticsSciWaveletOptions = {}): AcousticsSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAcousticsSciWavelet }; diff --git a/src/actuarial/advanced.ts b/src/actuarial/advanced.ts new file mode 100644 index 000000000..c284b2656 --- /dev/null +++ b/src/actuarial/advanced.ts @@ -0,0 +1,15 @@ +/** Actuarial Advanced module — tsb analytics library. */ +export interface Actuarial advancedOptions { tol?: number; maxIter?: number; } +export interface Actuarial advancedResult { values: number[]; converged: boolean; } +export function computeActuarial advanced(data: number[], opts: Actuarial advancedOptions = {}): Actuarial advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial advanced }; diff --git a/src/actuarial/aggregate.ts b/src/actuarial/aggregate.ts new file mode 100644 index 000000000..b9f49cca3 --- /dev/null +++ b/src/actuarial/aggregate.ts @@ -0,0 +1,22 @@ +/** Aggregate module — tsb analytics library. */ + +/** Options for Aggregate. */ +export interface AggregateOptions { tol?: number; maxIter?: number; } + +/** Result from Aggregate. */ +export interface AggregateResult { values: number[]; converged: boolean; } + +/** Compute Aggregate. */ +export function computeAggregate(data: number[], opts: AggregateOptions = {}): AggregateResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAggregate }; diff --git a/src/actuarial/aje.ts b/src/actuarial/aje.ts new file mode 100644 index 000000000..515b3624c --- /dev/null +++ b/src/actuarial/aje.ts @@ -0,0 +1,22 @@ +/** Aje module — tsb analytics library. */ + +/** Options for Aje. */ +export interface AjeOptions { tol?: number; maxIter?: number; } + +/** Result from Aje. */ +export interface AjeResult { values: number[]; converged: boolean; } + +/** Compute Aje. */ +export function computeAje(data: number[], opts: AjeOptions = {}): AjeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAje }; diff --git a/src/actuarial/base2.ts b/src/actuarial/base2.ts new file mode 100644 index 000000000..7872508fb --- /dev/null +++ b/src/actuarial/base2.ts @@ -0,0 +1,15 @@ +/** Actuarial Base2 module — tsb analytics library. */ +export interface Actuarial base2Options { tol?: number; maxIter?: number; } +export interface Actuarial base2Result { values: number[]; converged: boolean; } +export function computeActuarial base2(data: number[], opts: Actuarial base2Options = {}): Actuarial base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial base2 }; diff --git a/src/actuarial/batch.ts b/src/actuarial/batch.ts new file mode 100644 index 000000000..d19e6f94d --- /dev/null +++ b/src/actuarial/batch.ts @@ -0,0 +1,15 @@ +/** Actuarial Batch module — tsb analytics library. */ +export interface Actuarial batchOptions { tol?: number; maxIter?: number; } +export interface Actuarial batchResult { values: number[]; converged: boolean; } +export function computeActuarial batch(data: number[], opts: Actuarial batchOptions = {}): Actuarial batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial batch }; diff --git a/src/actuarial/bayesian_grad.ts b/src/actuarial/bayesian_grad.ts new file mode 100644 index 000000000..a232c73ce --- /dev/null +++ b/src/actuarial/bayesian_grad.ts @@ -0,0 +1,22 @@ +/** Bayesian Grad module — tsb analytics library. */ + +/** Options for Bayesian Grad. */ +export interface BayesianGradOptions { tol?: number; maxIter?: number; } + +/** Result from Bayesian Grad. */ +export interface BayesianGradResult { values: number[]; converged: boolean; } + +/** Compute Bayesian Grad. */ +export function computeBayesianGrad(data: number[], opts: BayesianGradOptions = {}): BayesianGradResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBayesianGrad }; diff --git a/src/actuarial/beta.ts b/src/actuarial/beta.ts new file mode 100644 index 000000000..9ffb49c3d --- /dev/null +++ b/src/actuarial/beta.ts @@ -0,0 +1,15 @@ +/** Actuarial Beta module — tsb analytics library. */ +export interface Actuarial betaOptions { tol?: number; maxIter?: number; } +export interface Actuarial betaResult { values: number[]; converged: boolean; } +export function computeActuarial beta(data: number[], opts: Actuarial betaOptions = {}): Actuarial betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial beta }; diff --git a/src/actuarial/bornhuetter_ferguson.ts b/src/actuarial/bornhuetter_ferguson.ts new file mode 100644 index 000000000..f7e3e4845 --- /dev/null +++ b/src/actuarial/bornhuetter_ferguson.ts @@ -0,0 +1,22 @@ +/** Bornhuetter Ferguson module — tsb analytics library. */ + +/** Options for Bornhuetter Ferguson. */ +export interface BornhuetterFergusonOptions { tol?: number; maxIter?: number; } + +/** Result from Bornhuetter Ferguson. */ +export interface BornhuetterFergusonResult { values: number[]; converged: boolean; } + +/** Compute Bornhuetter Ferguson. */ +export function computeBornhuetterFerguson(data: number[], opts: BornhuetterFergusonOptions = {}): BornhuetterFergusonResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBornhuetterFerguson }; diff --git a/src/actuarial/buhlmann.ts b/src/actuarial/buhlmann.ts new file mode 100644 index 000000000..f90b63c86 --- /dev/null +++ b/src/actuarial/buhlmann.ts @@ -0,0 +1,22 @@ +/** Buhlmann module — tsb analytics library. */ + +/** Options for Buhlmann. */ +export interface BuhlmannOptions { tol?: number; maxIter?: number; } + +/** Result from Buhlmann. */ +export interface BuhlmannResult { values: number[]; converged: boolean; } + +/** Compute Buhlmann. */ +export function computeBuhlmann(data: number[], opts: BuhlmannOptions = {}): BuhlmannResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBuhlmann }; diff --git a/src/actuarial/cairns_blake_dowd.ts b/src/actuarial/cairns_blake_dowd.ts new file mode 100644 index 000000000..e0e526cf5 --- /dev/null +++ b/src/actuarial/cairns_blake_dowd.ts @@ -0,0 +1,22 @@ +/** Cairns Blake Dowd module — tsb analytics library. */ + +/** Options for Cairns Blake Dowd. */ +export interface CairnsBlakeDowdOptions { tol?: number; maxIter?: number; } + +/** Result from Cairns Blake Dowd. */ +export interface CairnsBlakeDowdResult { values: number[]; converged: boolean; } + +/** Compute Cairns Blake Dowd. */ +export function computeCairnsBlakeDowd(data: number[], opts: CairnsBlakeDowdOptions = {}): CairnsBlakeDowdResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCairnsBlakeDowd }; diff --git a/src/actuarial/cbd.ts b/src/actuarial/cbd.ts new file mode 100644 index 000000000..114b8a025 --- /dev/null +++ b/src/actuarial/cbd.ts @@ -0,0 +1,22 @@ +/** Cbd module — tsb analytics library. */ + +/** Options for Cbd. */ +export interface CbdOptions { tol?: number; maxIter?: number; } + +/** Result from Cbd. */ +export interface CbdResult { values: number[]; converged: boolean; } + +/** Compute Cbd. */ +export function computeCbd(data: number[], opts: CbdOptions = {}): CbdResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCbd }; diff --git a/src/actuarial/chainladder.ts b/src/actuarial/chainladder.ts new file mode 100644 index 000000000..88f6a5203 --- /dev/null +++ b/src/actuarial/chainladder.ts @@ -0,0 +1,22 @@ +/** Chainladder module — tsb analytics library. */ + +/** Options for Chainladder. */ +export interface ChainladderOptions { tol?: number; maxIter?: number; } + +/** Result from Chainladder. */ +export interface ChainladderResult { values: number[]; converged: boolean; } + +/** Compute Chainladder. */ +export function computeChainladder(data: number[], opts: ChainladderOptions = {}): ChainladderResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeChainladder }; diff --git a/src/actuarial/cohort_table.ts b/src/actuarial/cohort_table.ts new file mode 100644 index 000000000..bf4ae70d4 --- /dev/null +++ b/src/actuarial/cohort_table.ts @@ -0,0 +1,22 @@ +/** Cohort Table module — tsb analytics library. */ + +/** Options for Cohort Table. */ +export interface CohortTableOptions { tol?: number; maxIter?: number; } + +/** Result from Cohort Table. */ +export interface CohortTableResult { values: number[]; converged: boolean; } + +/** Compute Cohort Table. */ +export function computeCohortTable(data: number[], opts: CohortTableOptions = {}): CohortTableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCohortTable }; diff --git a/src/actuarial/cpu.ts b/src/actuarial/cpu.ts new file mode 100644 index 000000000..cd6967564 --- /dev/null +++ b/src/actuarial/cpu.ts @@ -0,0 +1,15 @@ +/** Actuarial Cpu module — tsb analytics library. */ +export interface Actuarial cpuOptions { tol?: number; maxIter?: number; } +export interface Actuarial cpuResult { values: number[]; converged: boolean; } +export function computeActuarial cpu(data: number[], opts: Actuarial cpuOptions = {}): Actuarial cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial cpu }; diff --git a/src/actuarial/credibility.ts b/src/actuarial/credibility.ts new file mode 100644 index 000000000..c727a72dc --- /dev/null +++ b/src/actuarial/credibility.ts @@ -0,0 +1,22 @@ +/** Credibility module — tsb analytics library. */ + +/** Options for Credibility. */ +export interface CredibilityOptions { tol?: number; maxIter?: number; } + +/** Result from Credibility. */ +export interface CredibilityResult { values: number[]; converged: boolean; } + +/** Compute Credibility. */ +export function computeCredibility(data: number[], opts: CredibilityOptions = {}): CredibilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCredibility }; diff --git a/src/actuarial/dense.ts b/src/actuarial/dense.ts new file mode 100644 index 000000000..f06ca531f --- /dev/null +++ b/src/actuarial/dense.ts @@ -0,0 +1,15 @@ +/** Actuarial Dense module — tsb analytics library. */ +export interface Actuarial denseOptions { tol?: number; maxIter?: number; } +export interface Actuarial denseResult { values: number[]; converged: boolean; } +export function computeActuarial dense(data: number[], opts: Actuarial denseOptions = {}): Actuarial denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial dense }; diff --git a/src/actuarial/distributed.ts b/src/actuarial/distributed.ts new file mode 100644 index 000000000..57eadbea7 --- /dev/null +++ b/src/actuarial/distributed.ts @@ -0,0 +1,15 @@ +/** Actuarial Distributed module — tsb analytics library. */ +export interface Actuarial distributedOptions { tol?: number; maxIter?: number; } +export interface Actuarial distributedResult { values: number[]; converged: boolean; } +export function computeActuarial distributed(data: number[], opts: Actuarial distributedOptions = {}): Actuarial distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial distributed }; diff --git a/src/actuarial/experimental.ts b/src/actuarial/experimental.ts new file mode 100644 index 000000000..e795ea2f9 --- /dev/null +++ b/src/actuarial/experimental.ts @@ -0,0 +1,15 @@ +/** Actuarial Experimental module — tsb analytics library. */ +export interface Actuarial experimentalOptions { tol?: number; maxIter?: number; } +export interface Actuarial experimentalResult { values: number[]; converged: boolean; } +export function computeActuarial experimental(data: number[], opts: Actuarial experimentalOptions = {}): Actuarial experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial experimental }; diff --git a/src/actuarial/fast.ts b/src/actuarial/fast.ts new file mode 100644 index 000000000..821e83ff4 --- /dev/null +++ b/src/actuarial/fast.ts @@ -0,0 +1,15 @@ +/** Actuarial Fast module — tsb analytics library. */ +export interface Actuarial fastOptions { tol?: number; maxIter?: number; } +export interface Actuarial fastResult { values: number[]; converged: boolean; } +export function computeActuarial fast(data: number[], opts: Actuarial fastOptions = {}): Actuarial fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial fast }; diff --git a/src/actuarial/force_of_mortality.ts b/src/actuarial/force_of_mortality.ts new file mode 100644 index 000000000..f49c6bb04 --- /dev/null +++ b/src/actuarial/force_of_mortality.ts @@ -0,0 +1,22 @@ +/** Force Of Mortality module — tsb analytics library. */ + +/** Options for Force Of Mortality. */ +export interface ForceOfMortalityOptions { tol?: number; maxIter?: number; } + +/** Result from Force Of Mortality. */ +export interface ForceOfMortalityResult { values: number[]; converged: boolean; } + +/** Compute Force Of Mortality. */ +export function computeForceOfMortality(data: number[], opts: ForceOfMortalityOptions = {}): ForceOfMortalityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeForceOfMortality }; diff --git a/src/actuarial/future.ts b/src/actuarial/future.ts new file mode 100644 index 000000000..bf4b3ee68 --- /dev/null +++ b/src/actuarial/future.ts @@ -0,0 +1,15 @@ +/** Actuarial Future module — tsb analytics library. */ +export interface Actuarial futureOptions { tol?: number; maxIter?: number; } +export interface Actuarial futureResult { values: number[]; converged: boolean; } +export function computeActuarial future(data: number[], opts: Actuarial futureOptions = {}): Actuarial futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial future }; diff --git a/src/actuarial/gpu.ts b/src/actuarial/gpu.ts new file mode 100644 index 000000000..becf86895 --- /dev/null +++ b/src/actuarial/gpu.ts @@ -0,0 +1,15 @@ +/** Actuarial Gpu module — tsb analytics library. */ +export interface Actuarial gpuOptions { tol?: number; maxIter?: number; } +export interface Actuarial gpuResult { values: number[]; converged: boolean; } +export function computeActuarial gpu(data: number[], opts: Actuarial gpuOptions = {}): Actuarial gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial gpu }; diff --git a/src/actuarial/graduation.ts b/src/actuarial/graduation.ts new file mode 100644 index 000000000..cfd7c5003 --- /dev/null +++ b/src/actuarial/graduation.ts @@ -0,0 +1,22 @@ +/** Graduation module — tsb analytics library. */ + +/** Options for Graduation. */ +export interface GraduationOptions { tol?: number; maxIter?: number; } + +/** Result from Graduation. */ +export interface GraduationResult { values: number[]; converged: boolean; } + +/** Compute Graduation. */ +export function computeGraduation(data: number[], opts: GraduationOptions = {}): GraduationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGraduation }; diff --git a/src/actuarial/hazard.ts b/src/actuarial/hazard.ts new file mode 100644 index 000000000..21e9e1166 --- /dev/null +++ b/src/actuarial/hazard.ts @@ -0,0 +1,22 @@ +/** Hazard module — tsb analytics library. */ + +/** Options for Hazard. */ +export interface HazardOptions { tol?: number; maxIter?: number; } + +/** Result from Hazard. */ +export interface HazardResult { values: number[]; converged: boolean; } + +/** Compute Hazard. */ +export function computeHazard(data: number[], opts: HazardOptions = {}): HazardResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeHazard }; diff --git a/src/actuarial/improvement.ts b/src/actuarial/improvement.ts new file mode 100644 index 000000000..e0083f677 --- /dev/null +++ b/src/actuarial/improvement.ts @@ -0,0 +1,22 @@ +/** Improvement module — tsb analytics library. */ + +/** Options for Improvement. */ +export interface ImprovementOptions { tol?: number; maxIter?: number; } + +/** Result from Improvement. */ +export interface ImprovementResult { values: number[]; converged: boolean; } + +/** Compute Improvement. */ +export function computeImprovement(data: number[], opts: ImprovementOptions = {}): ImprovementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeImprovement }; diff --git a/src/actuarial/large.ts b/src/actuarial/large.ts new file mode 100644 index 000000000..ac948b63d --- /dev/null +++ b/src/actuarial/large.ts @@ -0,0 +1,15 @@ +/** Actuarial Large module — tsb analytics library. */ +export interface Actuarial largeOptions { tol?: number; maxIter?: number; } +export interface Actuarial largeResult { values: number[]; converged: boolean; } +export function computeActuarial large(data: number[], opts: Actuarial largeOptions = {}): Actuarial largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial large }; diff --git a/src/actuarial/lee_carter.ts b/src/actuarial/lee_carter.ts new file mode 100644 index 000000000..c567c9d92 --- /dev/null +++ b/src/actuarial/lee_carter.ts @@ -0,0 +1,22 @@ +/** Lee Carter module — tsb analytics library. */ + +/** Options for Lee Carter. */ +export interface LeeCarterOptions { tol?: number; maxIter?: number; } + +/** Result from Lee Carter. */ +export interface LeeCarterResult { values: number[]; converged: boolean; } + +/** Compute Lee Carter. */ +export function computeLeeCarter(data: number[], opts: LeeCarterOptions = {}): LeeCarterResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLeeCarter }; diff --git a/src/actuarial/legacy.ts b/src/actuarial/legacy.ts new file mode 100644 index 000000000..7c7e77063 --- /dev/null +++ b/src/actuarial/legacy.ts @@ -0,0 +1,15 @@ +/** Actuarial Legacy module — tsb analytics library. */ +export interface Actuarial legacyOptions { tol?: number; maxIter?: number; } +export interface Actuarial legacyResult { values: number[]; converged: boolean; } +export function computeActuarial legacy(data: number[], opts: Actuarial legacyOptions = {}): Actuarial legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial legacy }; diff --git a/src/actuarial/life_table.ts b/src/actuarial/life_table.ts new file mode 100644 index 000000000..3ddc099e5 --- /dev/null +++ b/src/actuarial/life_table.ts @@ -0,0 +1,22 @@ +/** Life Table module — tsb analytics library. */ + +/** Options for Life Table. */ +export interface LifeTableOptions { tol?: number; maxIter?: number; } + +/** Result from Life Table. */ +export interface LifeTableResult { values: number[]; converged: boolean; } + +/** Compute Life Table. */ +export function computeLifeTable(data: number[], opts: LifeTableOptions = {}): LifeTableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLifeTable }; diff --git a/src/actuarial/lite.ts b/src/actuarial/lite.ts new file mode 100644 index 000000000..9815d49ef --- /dev/null +++ b/src/actuarial/lite.ts @@ -0,0 +1,15 @@ +/** Actuarial Lite module — tsb analytics library. */ +export interface Actuarial liteOptions { tol?: number; maxIter?: number; } +export interface Actuarial liteResult { values: number[]; converged: boolean; } +export function computeActuarial lite(data: number[], opts: Actuarial liteOptions = {}): Actuarial liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial lite }; diff --git a/src/actuarial/longevity_swap.ts b/src/actuarial/longevity_swap.ts new file mode 100644 index 000000000..d622d3694 --- /dev/null +++ b/src/actuarial/longevity_swap.ts @@ -0,0 +1,22 @@ +/** Longevity Swap module — tsb analytics library. */ + +/** Options for Longevity Swap. */ +export interface LongevitySwapOptions { tol?: number; maxIter?: number; } + +/** Result from Longevity Swap. */ +export interface LongevitySwapResult { values: number[]; converged: boolean; } + +/** Compute Longevity Swap. */ +export function computeLongevitySwap(data: number[], opts: LongevitySwapOptions = {}): LongevitySwapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLongevitySwap }; diff --git a/src/actuarial/mini.ts b/src/actuarial/mini.ts new file mode 100644 index 000000000..14e473be1 --- /dev/null +++ b/src/actuarial/mini.ts @@ -0,0 +1,15 @@ +/** Actuarial Mini module — tsb analytics library. */ +export interface Actuarial miniOptions { tol?: number; maxIter?: number; } +export interface Actuarial miniResult { values: number[]; converged: boolean; } +export function computeActuarial mini(data: number[], opts: Actuarial miniOptions = {}): Actuarial miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial mini }; diff --git a/src/actuarial/mortality_table.ts b/src/actuarial/mortality_table.ts new file mode 100644 index 000000000..97476d340 --- /dev/null +++ b/src/actuarial/mortality_table.ts @@ -0,0 +1,22 @@ +/** Mortality Table module — tsb analytics library. */ + +/** Options for Mortality Table. */ +export interface MortalityTableOptions { tol?: number; maxIter?: number; } + +/** Result from Mortality Table. */ +export interface MortalityTableResult { values: number[]; converged: boolean; } + +/** Compute Mortality Table. */ +export function computeMortalityTable(data: number[], opts: MortalityTableOptions = {}): MortalityTableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMortalityTable }; diff --git a/src/actuarial/next.ts b/src/actuarial/next.ts new file mode 100644 index 000000000..c1d046a9e --- /dev/null +++ b/src/actuarial/next.ts @@ -0,0 +1,15 @@ +/** Actuarial Next module — tsb analytics library. */ +export interface Actuarial nextOptions { tol?: number; maxIter?: number; } +export interface Actuarial nextResult { values: number[]; converged: boolean; } +export function computeActuarial next(data: number[], opts: Actuarial nextOptions = {}): Actuarial nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial next }; diff --git a/src/actuarial/online.ts b/src/actuarial/online.ts new file mode 100644 index 000000000..5d3a08c04 --- /dev/null +++ b/src/actuarial/online.ts @@ -0,0 +1,15 @@ +/** Actuarial Online module — tsb analytics library. */ +export interface Actuarial onlineOptions { tol?: number; maxIter?: number; } +export interface Actuarial onlineResult { values: number[]; converged: boolean; } +export function computeActuarial online(data: number[], opts: Actuarial onlineOptions = {}): Actuarial onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial online }; diff --git a/src/actuarial/parallel.ts b/src/actuarial/parallel.ts new file mode 100644 index 000000000..9ae595a7f --- /dev/null +++ b/src/actuarial/parallel.ts @@ -0,0 +1,15 @@ +/** Actuarial Parallel module — tsb analytics library. */ +export interface Actuarial parallelOptions { tol?: number; maxIter?: number; } +export interface Actuarial parallelResult { values: number[]; converged: boolean; } +export function computeActuarial parallel(data: number[], opts: Actuarial parallelOptions = {}): Actuarial parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial parallel }; diff --git a/src/actuarial/plus.ts b/src/actuarial/plus.ts new file mode 100644 index 000000000..ace502786 --- /dev/null +++ b/src/actuarial/plus.ts @@ -0,0 +1,15 @@ +/** Actuarial Plus module — tsb analytics library. */ +export interface Actuarial plusOptions { tol?: number; maxIter?: number; } +export interface Actuarial plusResult { values: number[]; converged: boolean; } +export function computeActuarial plus(data: number[], opts: Actuarial plusOptions = {}): Actuarial plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial plus }; diff --git a/src/actuarial/population.ts b/src/actuarial/population.ts new file mode 100644 index 000000000..f79901dc3 --- /dev/null +++ b/src/actuarial/population.ts @@ -0,0 +1,22 @@ +/** Population module — tsb analytics library. */ + +/** Options for Population. */ +export interface PopulationOptions { tol?: number; maxIter?: number; } + +/** Result from Population. */ +export interface PopulationResult { values: number[]; converged: boolean; } + +/** Compute Population. */ +export function computePopulation(data: number[], opts: PopulationOptions = {}): PopulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePopulation }; diff --git a/src/actuarial/pro.ts b/src/actuarial/pro.ts new file mode 100644 index 000000000..9a6ad41ea --- /dev/null +++ b/src/actuarial/pro.ts @@ -0,0 +1,15 @@ +/** Actuarial Pro module — tsb analytics library. */ +export interface Actuarial proOptions { tol?: number; maxIter?: number; } +export interface Actuarial proResult { values: number[]; converged: boolean; } +export function computeActuarial pro(data: number[], opts: Actuarial proOptions = {}): Actuarial proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial pro }; diff --git a/src/actuarial/projection.ts b/src/actuarial/projection.ts new file mode 100644 index 000000000..178eb2971 --- /dev/null +++ b/src/actuarial/projection.ts @@ -0,0 +1,22 @@ +/** Projection module — tsb analytics library. */ + +/** Options for Projection. */ +export interface ProjectionOptions { tol?: number; maxIter?: number; } + +/** Result from Projection. */ +export interface ProjectionResult { values: number[]; converged: boolean; } + +/** Compute Projection. */ +export function computeProjection(data: number[], opts: ProjectionOptions = {}): ProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeProjection }; diff --git a/src/actuarial/q_forward.ts b/src/actuarial/q_forward.ts new file mode 100644 index 000000000..7c42b5e7e --- /dev/null +++ b/src/actuarial/q_forward.ts @@ -0,0 +1,22 @@ +/** Q Forward module — tsb analytics library. */ + +/** Options for Q Forward. */ +export interface QForwardOptions { tol?: number; maxIter?: number; } + +/** Result from Q Forward. */ +export interface QForwardResult { values: number[]; converged: boolean; } + +/** Compute Q Forward. */ +export function computeQForward(data: number[], opts: QForwardOptions = {}): QForwardResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeQForward }; diff --git a/src/actuarial/robust.ts b/src/actuarial/robust.ts new file mode 100644 index 000000000..df502d996 --- /dev/null +++ b/src/actuarial/robust.ts @@ -0,0 +1,15 @@ +/** Actuarial Robust module — tsb analytics library. */ +export interface Actuarial robustOptions { tol?: number; maxIter?: number; } +export interface Actuarial robustResult { values: number[]; converged: boolean; } +export function computeActuarial robust(data: number[], opts: Actuarial robustOptions = {}): Actuarial robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial robust }; diff --git a/src/actuarial/s_forward.ts b/src/actuarial/s_forward.ts new file mode 100644 index 000000000..3f9f00492 --- /dev/null +++ b/src/actuarial/s_forward.ts @@ -0,0 +1,22 @@ +/** S Forward module — tsb analytics library. */ + +/** Options for S Forward. */ +export interface SForwardOptions { tol?: number; maxIter?: number; } + +/** Result from S Forward. */ +export interface SForwardResult { values: number[]; converged: boolean; } + +/** Compute S Forward. */ +export function computeSForward(data: number[], opts: SForwardOptions = {}): SForwardResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSForward }; diff --git a/src/actuarial/select.ts b/src/actuarial/select.ts new file mode 100644 index 000000000..3ddd88860 --- /dev/null +++ b/src/actuarial/select.ts @@ -0,0 +1,22 @@ +/** Select module — tsb analytics library. */ + +/** Options for Select. */ +export interface SelectOptions { tol?: number; maxIter?: number; } + +/** Result from Select. */ +export interface SelectResult { values: number[]; converged: boolean; } + +/** Compute Select. */ +export function computeSelect(data: number[], opts: SelectOptions = {}): SelectResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSelect }; diff --git a/src/actuarial/small.ts b/src/actuarial/small.ts new file mode 100644 index 000000000..10cd1f1ce --- /dev/null +++ b/src/actuarial/small.ts @@ -0,0 +1,15 @@ +/** Actuarial Small module — tsb analytics library. */ +export interface Actuarial smallOptions { tol?: number; maxIter?: number; } +export interface Actuarial smallResult { values: number[]; converged: boolean; } +export function computeActuarial small(data: number[], opts: Actuarial smallOptions = {}): Actuarial smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial small }; diff --git a/src/actuarial/sparse.ts b/src/actuarial/sparse.ts new file mode 100644 index 000000000..1e3f4ab0c --- /dev/null +++ b/src/actuarial/sparse.ts @@ -0,0 +1,15 @@ +/** Actuarial Sparse module — tsb analytics library. */ +export interface Actuarial sparseOptions { tol?: number; maxIter?: number; } +export interface Actuarial sparseResult { values: number[]; converged: boolean; } +export function computeActuarial sparse(data: number[], opts: Actuarial sparseOptions = {}): Actuarial sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial sparse }; diff --git a/src/actuarial/spline_grad.ts b/src/actuarial/spline_grad.ts new file mode 100644 index 000000000..6380980f7 --- /dev/null +++ b/src/actuarial/spline_grad.ts @@ -0,0 +1,22 @@ +/** Spline Grad module — tsb analytics library. */ + +/** Options for Spline Grad. */ +export interface SplineGradOptions { tol?: number; maxIter?: number; } + +/** Result from Spline Grad. */ +export interface SplineGradResult { values: number[]; converged: boolean; } + +/** Compute Spline Grad. */ +export function computeSplineGrad(data: number[], opts: SplineGradOptions = {}): SplineGradResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSplineGrad }; diff --git a/src/actuarial/stable.ts b/src/actuarial/stable.ts new file mode 100644 index 000000000..3bdc2ef72 --- /dev/null +++ b/src/actuarial/stable.ts @@ -0,0 +1,15 @@ +/** Actuarial Stable module — tsb analytics library. */ +export interface Actuarial stableOptions { tol?: number; maxIter?: number; } +export interface Actuarial stableResult { values: number[]; converged: boolean; } +export function computeActuarial stable(data: number[], opts: Actuarial stableOptions = {}): Actuarial stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial stable }; diff --git a/src/actuarial/stochastic_mortality.ts b/src/actuarial/stochastic_mortality.ts new file mode 100644 index 000000000..b3e79ded1 --- /dev/null +++ b/src/actuarial/stochastic_mortality.ts @@ -0,0 +1,22 @@ +/** Stochastic Mortality module — tsb analytics library. */ + +/** Options for Stochastic Mortality. */ +export interface StochasticMortalityOptions { tol?: number; maxIter?: number; } + +/** Result from Stochastic Mortality. */ +export interface StochasticMortalityResult { values: number[]; converged: boolean; } + +/** Compute Stochastic Mortality. */ +export function computeStochasticMortality(data: number[], opts: StochasticMortalityOptions = {}): StochasticMortalityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeStochasticMortality }; diff --git a/src/actuarial/straub.ts b/src/actuarial/straub.ts new file mode 100644 index 000000000..33c616e17 --- /dev/null +++ b/src/actuarial/straub.ts @@ -0,0 +1,22 @@ +/** Straub module — tsb analytics library. */ + +/** Options for Straub. */ +export interface StraubOptions { tol?: number; maxIter?: number; } + +/** Result from Straub. */ +export interface StraubResult { values: number[]; converged: boolean; } + +/** Compute Straub. */ +export function computeStraub(data: number[], opts: StraubOptions = {}): StraubResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeStraub }; diff --git a/src/actuarial/streaming.ts b/src/actuarial/streaming.ts new file mode 100644 index 000000000..1a96ee947 --- /dev/null +++ b/src/actuarial/streaming.ts @@ -0,0 +1,15 @@ +/** Actuarial Streaming module — tsb analytics library. */ +export interface Actuarial streamingOptions { tol?: number; maxIter?: number; } +export interface Actuarial streamingResult { values: number[]; converged: boolean; } +export function computeActuarial streaming(data: number[], opts: Actuarial streamingOptions = {}): Actuarial streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial streaming }; diff --git a/src/actuarial/survival.ts b/src/actuarial/survival.ts new file mode 100644 index 000000000..a3b2ee029 --- /dev/null +++ b/src/actuarial/survival.ts @@ -0,0 +1,22 @@ +/** Survival module — tsb analytics library. */ + +/** Options for Survival. */ +export interface SurvivalOptions { tol?: number; maxIter?: number; } + +/** Result from Survival. */ +export interface SurvivalResult { values: number[]; converged: boolean; } + +/** Compute Survival. */ +export function computeSurvival(data: number[], opts: SurvivalOptions = {}): SurvivalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSurvival }; diff --git a/src/actuarial/ultimate.ts b/src/actuarial/ultimate.ts new file mode 100644 index 000000000..60e46b346 --- /dev/null +++ b/src/actuarial/ultimate.ts @@ -0,0 +1,22 @@ +/** Ultimate module — tsb analytics library. */ + +/** Options for Ultimate. */ +export interface UltimateOptions { tol?: number; maxIter?: number; } + +/** Result from Ultimate. */ +export interface UltimateResult { values: number[]; converged: boolean; } + +/** Compute Ultimate. */ +export function computeUltimate(data: number[], opts: UltimateOptions = {}): UltimateResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeUltimate }; diff --git a/src/actuarial/v2.ts b/src/actuarial/v2.ts new file mode 100644 index 000000000..e10a29740 --- /dev/null +++ b/src/actuarial/v2.ts @@ -0,0 +1,15 @@ +/** Actuarial V2 module — tsb analytics library. */ +export interface Actuarial v2Options { tol?: number; maxIter?: number; } +export interface Actuarial v2Result { values: number[]; converged: boolean; } +export function computeActuarial v2(data: number[], opts: Actuarial v2Options = {}): Actuarial v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial v2 }; diff --git a/src/actuarial/v3.ts b/src/actuarial/v3.ts new file mode 100644 index 000000000..99db1c833 --- /dev/null +++ b/src/actuarial/v3.ts @@ -0,0 +1,15 @@ +/** Actuarial V3 module — tsb analytics library. */ +export interface Actuarial v3Options { tol?: number; maxIter?: number; } +export interface Actuarial v3Result { values: number[]; converged: boolean; } +export function computeActuarial v3(data: number[], opts: Actuarial v3Options = {}): Actuarial v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial v3 }; diff --git a/src/actuarial/wasm.ts b/src/actuarial/wasm.ts new file mode 100644 index 000000000..e4511c13f --- /dev/null +++ b/src/actuarial/wasm.ts @@ -0,0 +1,15 @@ +/** Actuarial Wasm module — tsb analytics library. */ +export interface Actuarial wasmOptions { tol?: number; maxIter?: number; } +export interface Actuarial wasmResult { values: number[]; converged: boolean; } +export function computeActuarial wasm(data: number[], opts: Actuarial wasmOptions = {}): Actuarial wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial wasm }; diff --git a/src/actuarial/whittaker.ts b/src/actuarial/whittaker.ts new file mode 100644 index 000000000..1163a3bf1 --- /dev/null +++ b/src/actuarial/whittaker.ts @@ -0,0 +1,22 @@ +/** Whittaker module — tsb analytics library. */ + +/** Options for Whittaker. */ +export interface WhittakerOptions { tol?: number; maxIter?: number; } + +/** Result from Whittaker. */ +export interface WhittakerResult { values: number[]; converged: boolean; } + +/** Compute Whittaker. */ +export function computeWhittaker(data: number[], opts: WhittakerOptions = {}): WhittakerResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeWhittaker }; diff --git a/src/actuarial/xlarge.ts b/src/actuarial/xlarge.ts new file mode 100644 index 000000000..9d5e5e248 --- /dev/null +++ b/src/actuarial/xlarge.ts @@ -0,0 +1,15 @@ +/** Actuarial Xlarge module — tsb analytics library. */ +export interface Actuarial xlargeOptions { tol?: number; maxIter?: number; } +export interface Actuarial xlargeResult { values: number[]; converged: boolean; } +export function computeActuarial xlarge(data: number[], opts: Actuarial xlargeOptions = {}): Actuarial xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeActuarial xlarge }; diff --git a/src/adhesion_sci/adaptation.ts b/src/adhesion_sci/adaptation.ts new file mode 100644 index 000000000..028f99cbc --- /dev/null +++ b/src/adhesion_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci adaptation module — tsb analytics library. */ +export interface AdhesionSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciAdaptationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciAdaptation(data: number[], opts: AdhesionSciAdaptationOptions = {}): AdhesionSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciAdaptation }; diff --git a/src/adhesion_sci/aggregation.ts b/src/adhesion_sci/aggregation.ts new file mode 100644 index 000000000..41799b0fc --- /dev/null +++ b/src/adhesion_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci aggregation module — tsb analytics library. */ +export interface AdhesionSciAggregationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciAggregationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciAggregation(data: number[], opts: AdhesionSciAggregationOptions = {}): AdhesionSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciAggregation }; diff --git a/src/adhesion_sci/algebra.ts b/src/adhesion_sci/algebra.ts new file mode 100644 index 000000000..7f12f886e --- /dev/null +++ b/src/adhesion_sci/algebra.ts @@ -0,0 +1,14 @@ +/** adhesion_sci algebra module — tsb analytics library. */ +export interface AdhesionSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciAlgebraResult { values: number[]; converged: boolean; } +export function computeAdhesionSciAlgebra(data: number[], opts: AdhesionSciAlgebraOptions = {}): AdhesionSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciAlgebra }; diff --git a/src/adhesion_sci/alignment.ts b/src/adhesion_sci/alignment.ts new file mode 100644 index 000000000..405bcc935 --- /dev/null +++ b/src/adhesion_sci/alignment.ts @@ -0,0 +1,14 @@ +/** adhesion_sci alignment module — tsb analytics library. */ +export interface AdhesionSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciAlignmentResult { values: number[]; converged: boolean; } +export function computeAdhesionSciAlignment(data: number[], opts: AdhesionSciAlignmentOptions = {}): AdhesionSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciAlignment }; diff --git a/src/adhesion_sci/analysis.ts b/src/adhesion_sci/analysis.ts new file mode 100644 index 000000000..decc72166 --- /dev/null +++ b/src/adhesion_sci/analysis.ts @@ -0,0 +1,14 @@ +/** adhesion_sci analysis module — tsb analytics library. */ +export interface AdhesionSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciAnalysisResult { values: number[]; converged: boolean; } +export function computeAdhesionSciAnalysis(data: number[], opts: AdhesionSciAnalysisOptions = {}): AdhesionSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciAnalysis }; diff --git a/src/adhesion_sci/augmentation.ts b/src/adhesion_sci/augmentation.ts new file mode 100644 index 000000000..a9da7e15c --- /dev/null +++ b/src/adhesion_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci augmentation module — tsb analytics library. */ +export interface AdhesionSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciAugmentationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciAugmentation(data: number[], opts: AdhesionSciAugmentationOptions = {}): AdhesionSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciAugmentation }; diff --git a/src/adhesion_sci/bagging.ts b/src/adhesion_sci/bagging.ts new file mode 100644 index 000000000..96e6eed2c --- /dev/null +++ b/src/adhesion_sci/bagging.ts @@ -0,0 +1,14 @@ +/** adhesion_sci bagging module — tsb analytics library. */ +export interface AdhesionSciBaggingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciBaggingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciBagging(data: number[], opts: AdhesionSciBaggingOptions = {}): AdhesionSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciBagging }; diff --git a/src/adhesion_sci/basis.ts b/src/adhesion_sci/basis.ts new file mode 100644 index 000000000..56b322842 --- /dev/null +++ b/src/adhesion_sci/basis.ts @@ -0,0 +1,14 @@ +/** adhesion_sci basis module — tsb analytics library. */ +export interface AdhesionSciBasisOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciBasisResult { values: number[]; converged: boolean; } +export function computeAdhesionSciBasis(data: number[], opts: AdhesionSciBasisOptions = {}): AdhesionSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciBasis }; diff --git a/src/adhesion_sci/benchmarking.ts b/src/adhesion_sci/benchmarking.ts new file mode 100644 index 000000000..ec6bf64d5 --- /dev/null +++ b/src/adhesion_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** adhesion_sci benchmarking module — tsb analytics library. */ +export interface AdhesionSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciBenchmarking(data: number[], opts: AdhesionSciBenchmarkingOptions = {}): AdhesionSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciBenchmarking }; diff --git a/src/adhesion_sci/blending.ts b/src/adhesion_sci/blending.ts new file mode 100644 index 000000000..25e875645 --- /dev/null +++ b/src/adhesion_sci/blending.ts @@ -0,0 +1,14 @@ +/** adhesion_sci blending module — tsb analytics library. */ +export interface AdhesionSciBlendingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciBlendingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciBlending(data: number[], opts: AdhesionSciBlendingOptions = {}): AdhesionSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciBlending }; diff --git a/src/adhesion_sci/boosting.ts b/src/adhesion_sci/boosting.ts new file mode 100644 index 000000000..cddd20b2a --- /dev/null +++ b/src/adhesion_sci/boosting.ts @@ -0,0 +1,14 @@ +/** adhesion_sci boosting module — tsb analytics library. */ +export interface AdhesionSciBoostingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciBoostingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciBoosting(data: number[], opts: AdhesionSciBoostingOptions = {}): AdhesionSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciBoosting }; diff --git a/src/adhesion_sci/bootstrap.ts b/src/adhesion_sci/bootstrap.ts new file mode 100644 index 000000000..4ba1e0a6b --- /dev/null +++ b/src/adhesion_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** adhesion_sci bootstrap module — tsb analytics library. */ +export interface AdhesionSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciBootstrapResult { values: number[]; converged: boolean; } +export function computeAdhesionSciBootstrap(data: number[], opts: AdhesionSciBootstrapOptions = {}): AdhesionSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciBootstrap }; diff --git a/src/adhesion_sci/calculus.ts b/src/adhesion_sci/calculus.ts new file mode 100644 index 000000000..51e037d72 --- /dev/null +++ b/src/adhesion_sci/calculus.ts @@ -0,0 +1,14 @@ +/** adhesion_sci calculus module — tsb analytics library. */ +export interface AdhesionSciCalculusOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCalculusResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCalculus(data: number[], opts: AdhesionSciCalculusOptions = {}): AdhesionSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCalculus }; diff --git a/src/adhesion_sci/calibration.ts b/src/adhesion_sci/calibration.ts new file mode 100644 index 000000000..dba336d85 --- /dev/null +++ b/src/adhesion_sci/calibration.ts @@ -0,0 +1,14 @@ +/** adhesion_sci calibration module — tsb analytics library. */ +export interface AdhesionSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCalibrationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCalibration(data: number[], opts: AdhesionSciCalibrationOptions = {}): AdhesionSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCalibration }; diff --git a/src/adhesion_sci/characterization.ts b/src/adhesion_sci/characterization.ts new file mode 100644 index 000000000..185d5d57a --- /dev/null +++ b/src/adhesion_sci/characterization.ts @@ -0,0 +1,14 @@ +/** adhesion_sci characterization module — tsb analytics library. */ +export interface AdhesionSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCharacterization(data: number[], opts: AdhesionSciCharacterizationOptions = {}): AdhesionSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCharacterization }; diff --git a/src/adhesion_sci/classification.ts b/src/adhesion_sci/classification.ts new file mode 100644 index 000000000..4fffb3c9d --- /dev/null +++ b/src/adhesion_sci/classification.ts @@ -0,0 +1,14 @@ +/** adhesion_sci classification module — tsb analytics library. */ +export interface AdhesionSciClassificationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciClassificationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciClassification(data: number[], opts: AdhesionSciClassificationOptions = {}): AdhesionSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciClassification }; diff --git a/src/adhesion_sci/clustering.ts b/src/adhesion_sci/clustering.ts new file mode 100644 index 000000000..3becc127e --- /dev/null +++ b/src/adhesion_sci/clustering.ts @@ -0,0 +1,14 @@ +/** adhesion_sci clustering module — tsb analytics library. */ +export interface AdhesionSciClusteringOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciClusteringResult { values: number[]; converged: boolean; } +export function computeAdhesionSciClustering(data: number[], opts: AdhesionSciClusteringOptions = {}): AdhesionSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciClustering }; diff --git a/src/adhesion_sci/compression.ts b/src/adhesion_sci/compression.ts new file mode 100644 index 000000000..555e24c0d --- /dev/null +++ b/src/adhesion_sci/compression.ts @@ -0,0 +1,14 @@ +/** adhesion_sci compression module — tsb analytics library. */ +export interface AdhesionSciCompressionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCompressionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCompression(data: number[], opts: AdhesionSciCompressionOptions = {}): AdhesionSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCompression }; diff --git a/src/adhesion_sci/continuous.ts b/src/adhesion_sci/continuous.ts new file mode 100644 index 000000000..7aa0431f3 --- /dev/null +++ b/src/adhesion_sci/continuous.ts @@ -0,0 +1,14 @@ +/** adhesion_sci continuous module — tsb analytics library. */ +export interface AdhesionSciContinuousOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciContinuousResult { values: number[]; converged: boolean; } +export function computeAdhesionSciContinuous(data: number[], opts: AdhesionSciContinuousOptions = {}): AdhesionSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciContinuous }; diff --git a/src/adhesion_sci/control.ts b/src/adhesion_sci/control.ts new file mode 100644 index 000000000..ecba744c7 --- /dev/null +++ b/src/adhesion_sci/control.ts @@ -0,0 +1,14 @@ +/** adhesion_sci control module — tsb analytics library. */ +export interface AdhesionSciControlOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciControlResult { values: number[]; converged: boolean; } +export function computeAdhesionSciControl(data: number[], opts: AdhesionSciControlOptions = {}): AdhesionSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciControl }; diff --git a/src/adhesion_sci/convergence.ts b/src/adhesion_sci/convergence.ts new file mode 100644 index 000000000..a3fc3c834 --- /dev/null +++ b/src/adhesion_sci/convergence.ts @@ -0,0 +1,14 @@ +/** adhesion_sci convergence module — tsb analytics library. */ +export interface AdhesionSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciConvergenceResult { values: number[]; converged: boolean; } +export function computeAdhesionSciConvergence(data: number[], opts: AdhesionSciConvergenceOptions = {}): AdhesionSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciConvergence }; diff --git a/src/adhesion_sci/convex.ts b/src/adhesion_sci/convex.ts new file mode 100644 index 000000000..2a62be365 --- /dev/null +++ b/src/adhesion_sci/convex.ts @@ -0,0 +1,14 @@ +/** adhesion_sci convex module — tsb analytics library. */ +export interface AdhesionSciConvexOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciConvexResult { values: number[]; converged: boolean; } +export function computeAdhesionSciConvex(data: number[], opts: AdhesionSciConvexOptions = {}): AdhesionSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciConvex }; diff --git a/src/adhesion_sci/correlation.ts b/src/adhesion_sci/correlation.ts new file mode 100644 index 000000000..4743c8644 --- /dev/null +++ b/src/adhesion_sci/correlation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci correlation module — tsb analytics library. */ +export interface AdhesionSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCorrelationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCorrelation(data: number[], opts: AdhesionSciCorrelationOptions = {}): AdhesionSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCorrelation }; diff --git a/src/adhesion_sci/covariance.ts b/src/adhesion_sci/covariance.ts new file mode 100644 index 000000000..97687e07f --- /dev/null +++ b/src/adhesion_sci/covariance.ts @@ -0,0 +1,14 @@ +/** adhesion_sci covariance module — tsb analytics library. */ +export interface AdhesionSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCovarianceResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCovariance(data: number[], opts: AdhesionSciCovarianceOptions = {}): AdhesionSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCovariance }; diff --git a/src/adhesion_sci/cross_validation.ts b/src/adhesion_sci/cross_validation.ts new file mode 100644 index 000000000..05ffe3cc0 --- /dev/null +++ b/src/adhesion_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci cross_validation module — tsb analytics library. */ +export interface AdhesionSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciCrossValidation(data: number[], opts: AdhesionSciCrossValidationOptions = {}): AdhesionSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciCrossValidation }; diff --git a/src/adhesion_sci/decoding.ts b/src/adhesion_sci/decoding.ts new file mode 100644 index 000000000..e61102ee8 --- /dev/null +++ b/src/adhesion_sci/decoding.ts @@ -0,0 +1,14 @@ +/** adhesion_sci decoding module — tsb analytics library. */ +export interface AdhesionSciDecodingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDecodingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDecoding(data: number[], opts: AdhesionSciDecodingOptions = {}): AdhesionSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDecoding }; diff --git a/src/adhesion_sci/decomposition.ts b/src/adhesion_sci/decomposition.ts new file mode 100644 index 000000000..9c6fb63f4 --- /dev/null +++ b/src/adhesion_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** adhesion_sci decomposition module — tsb analytics library. */ +export interface AdhesionSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDecompositionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDecomposition(data: number[], opts: AdhesionSciDecompositionOptions = {}): AdhesionSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDecomposition }; diff --git a/src/adhesion_sci/detection.ts b/src/adhesion_sci/detection.ts new file mode 100644 index 000000000..085519ea5 --- /dev/null +++ b/src/adhesion_sci/detection.ts @@ -0,0 +1,14 @@ +/** adhesion_sci detection module — tsb analytics library. */ +export interface AdhesionSciDetectionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDetectionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDetection(data: number[], opts: AdhesionSciDetectionOptions = {}): AdhesionSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDetection }; diff --git a/src/adhesion_sci/deterministic.ts b/src/adhesion_sci/deterministic.ts new file mode 100644 index 000000000..601d30797 --- /dev/null +++ b/src/adhesion_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** adhesion_sci deterministic module — tsb analytics library. */ +export interface AdhesionSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDeterministicResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDeterministic(data: number[], opts: AdhesionSciDeterministicOptions = {}): AdhesionSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDeterministic }; diff --git a/src/adhesion_sci/diagnostics.ts b/src/adhesion_sci/diagnostics.ts new file mode 100644 index 000000000..242d1791b --- /dev/null +++ b/src/adhesion_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** adhesion_sci diagnostics module — tsb analytics library. */ +export interface AdhesionSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDiagnostics(data: number[], opts: AdhesionSciDiagnosticsOptions = {}): AdhesionSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDiagnostics }; diff --git a/src/adhesion_sci/differential.ts b/src/adhesion_sci/differential.ts new file mode 100644 index 000000000..c708a4355 --- /dev/null +++ b/src/adhesion_sci/differential.ts @@ -0,0 +1,14 @@ +/** adhesion_sci differential module — tsb analytics library. */ +export interface AdhesionSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDifferentialResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDifferential(data: number[], opts: AdhesionSciDifferentialOptions = {}): AdhesionSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDifferential }; diff --git a/src/adhesion_sci/discrete.ts b/src/adhesion_sci/discrete.ts new file mode 100644 index 000000000..e8cbc3104 --- /dev/null +++ b/src/adhesion_sci/discrete.ts @@ -0,0 +1,14 @@ +/** adhesion_sci discrete module — tsb analytics library. */ +export interface AdhesionSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDiscreteResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDiscrete(data: number[], opts: AdhesionSciDiscreteOptions = {}): AdhesionSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDiscrete }; diff --git a/src/adhesion_sci/distribution.ts b/src/adhesion_sci/distribution.ts new file mode 100644 index 000000000..5c70c8725 --- /dev/null +++ b/src/adhesion_sci/distribution.ts @@ -0,0 +1,14 @@ +/** adhesion_sci distribution module — tsb analytics library. */ +export interface AdhesionSciDistributionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDistributionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDistribution(data: number[], opts: AdhesionSciDistributionOptions = {}): AdhesionSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDistribution }; diff --git a/src/adhesion_sci/dynamic.ts b/src/adhesion_sci/dynamic.ts new file mode 100644 index 000000000..24dd4ecd6 --- /dev/null +++ b/src/adhesion_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** adhesion_sci dynamic module — tsb analytics library. */ +export interface AdhesionSciDynamicOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciDynamicResult { values: number[]; converged: boolean; } +export function computeAdhesionSciDynamic(data: number[], opts: AdhesionSciDynamicOptions = {}): AdhesionSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciDynamic }; diff --git a/src/adhesion_sci/embedding.ts b/src/adhesion_sci/embedding.ts new file mode 100644 index 000000000..c25800c74 --- /dev/null +++ b/src/adhesion_sci/embedding.ts @@ -0,0 +1,14 @@ +/** adhesion_sci embedding module — tsb analytics library. */ +export interface AdhesionSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciEmbedding(data: number[], opts: AdhesionSciEmbeddingOptions = {}): AdhesionSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciEmbedding }; diff --git a/src/adhesion_sci/encoding.ts b/src/adhesion_sci/encoding.ts new file mode 100644 index 000000000..276f47635 --- /dev/null +++ b/src/adhesion_sci/encoding.ts @@ -0,0 +1,14 @@ +/** adhesion_sci encoding module — tsb analytics library. */ +export interface AdhesionSciEncodingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciEncodingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciEncoding(data: number[], opts: AdhesionSciEncodingOptions = {}): AdhesionSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciEncoding }; diff --git a/src/adhesion_sci/ensemble.ts b/src/adhesion_sci/ensemble.ts new file mode 100644 index 000000000..467ed909e --- /dev/null +++ b/src/adhesion_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** adhesion_sci ensemble module — tsb analytics library. */ +export interface AdhesionSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciEnsembleResult { values: number[]; converged: boolean; } +export function computeAdhesionSciEnsemble(data: number[], opts: AdhesionSciEnsembleOptions = {}): AdhesionSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciEnsemble }; diff --git a/src/adhesion_sci/estimation.ts b/src/adhesion_sci/estimation.ts new file mode 100644 index 000000000..cbf6d3609 --- /dev/null +++ b/src/adhesion_sci/estimation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci estimation module — tsb analytics library. */ +export interface AdhesionSciEstimationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciEstimationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciEstimation(data: number[], opts: AdhesionSciEstimationOptions = {}): AdhesionSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciEstimation }; diff --git a/src/adhesion_sci/evaluation.ts b/src/adhesion_sci/evaluation.ts new file mode 100644 index 000000000..c9ee3e269 --- /dev/null +++ b/src/adhesion_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci evaluation module — tsb analytics library. */ +export interface AdhesionSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciEvaluationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciEvaluation(data: number[], opts: AdhesionSciEvaluationOptions = {}): AdhesionSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciEvaluation }; diff --git a/src/adhesion_sci/extrapolation.ts b/src/adhesion_sci/extrapolation.ts new file mode 100644 index 000000000..454cbe9f0 --- /dev/null +++ b/src/adhesion_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci extrapolation module — tsb analytics library. */ +export interface AdhesionSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciExtrapolation(data: number[], opts: AdhesionSciExtrapolationOptions = {}): AdhesionSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciExtrapolation }; diff --git a/src/adhesion_sci/features.ts b/src/adhesion_sci/features.ts new file mode 100644 index 000000000..bcf891ffd --- /dev/null +++ b/src/adhesion_sci/features.ts @@ -0,0 +1,14 @@ +/** adhesion_sci features module — tsb analytics library. */ +export interface AdhesionSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciFeaturesResult { values: number[]; converged: boolean; } +export function computeAdhesionSciFeatures(data: number[], opts: AdhesionSciFeaturesOptions = {}): AdhesionSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciFeatures }; diff --git a/src/adhesion_sci/feedback.ts b/src/adhesion_sci/feedback.ts new file mode 100644 index 000000000..0ca9d9b22 --- /dev/null +++ b/src/adhesion_sci/feedback.ts @@ -0,0 +1,14 @@ +/** adhesion_sci feedback module — tsb analytics library. */ +export interface AdhesionSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciFeedbackResult { values: number[]; converged: boolean; } +export function computeAdhesionSciFeedback(data: number[], opts: AdhesionSciFeedbackOptions = {}): AdhesionSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciFeedback }; diff --git a/src/adhesion_sci/filtering.ts b/src/adhesion_sci/filtering.ts new file mode 100644 index 000000000..7615cd26c --- /dev/null +++ b/src/adhesion_sci/filtering.ts @@ -0,0 +1,14 @@ +/** adhesion_sci filtering module — tsb analytics library. */ +export interface AdhesionSciFilteringOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciFilteringResult { values: number[]; converged: boolean; } +export function computeAdhesionSciFiltering(data: number[], opts: AdhesionSciFilteringOptions = {}): AdhesionSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciFiltering }; diff --git a/src/adhesion_sci/fourier.ts b/src/adhesion_sci/fourier.ts new file mode 100644 index 000000000..05ba0f930 --- /dev/null +++ b/src/adhesion_sci/fourier.ts @@ -0,0 +1,14 @@ +/** adhesion_sci fourier module — tsb analytics library. */ +export interface AdhesionSciFourierOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciFourierResult { values: number[]; converged: boolean; } +export function computeAdhesionSciFourier(data: number[], opts: AdhesionSciFourierOptions = {}): AdhesionSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciFourier }; diff --git a/src/adhesion_sci/fusion.ts b/src/adhesion_sci/fusion.ts new file mode 100644 index 000000000..cadb6176c --- /dev/null +++ b/src/adhesion_sci/fusion.ts @@ -0,0 +1,14 @@ +/** adhesion_sci fusion module — tsb analytics library. */ +export interface AdhesionSciFusionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciFusionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciFusion(data: number[], opts: AdhesionSciFusionOptions = {}): AdhesionSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciFusion }; diff --git a/src/adhesion_sci/generation.ts b/src/adhesion_sci/generation.ts new file mode 100644 index 000000000..990653b45 --- /dev/null +++ b/src/adhesion_sci/generation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci generation module — tsb analytics library. */ +export interface AdhesionSciGenerationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciGenerationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciGeneration(data: number[], opts: AdhesionSciGenerationOptions = {}): AdhesionSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciGeneration }; diff --git a/src/adhesion_sci/geometry.ts b/src/adhesion_sci/geometry.ts new file mode 100644 index 000000000..b870cd633 --- /dev/null +++ b/src/adhesion_sci/geometry.ts @@ -0,0 +1,14 @@ +/** adhesion_sci geometry module — tsb analytics library. */ +export interface AdhesionSciGeometryOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciGeometryResult { values: number[]; converged: boolean; } +export function computeAdhesionSciGeometry(data: number[], opts: AdhesionSciGeometryOptions = {}): AdhesionSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciGeometry }; diff --git a/src/adhesion_sci/gradient.ts b/src/adhesion_sci/gradient.ts new file mode 100644 index 000000000..4bf8ab50f --- /dev/null +++ b/src/adhesion_sci/gradient.ts @@ -0,0 +1,14 @@ +/** adhesion_sci gradient module — tsb analytics library. */ +export interface AdhesionSciGradientOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciGradientResult { values: number[]; converged: boolean; } +export function computeAdhesionSciGradient(data: number[], opts: AdhesionSciGradientOptions = {}): AdhesionSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciGradient }; diff --git a/src/adhesion_sci/hessian.ts b/src/adhesion_sci/hessian.ts new file mode 100644 index 000000000..7bace9cb9 --- /dev/null +++ b/src/adhesion_sci/hessian.ts @@ -0,0 +1,14 @@ +/** adhesion_sci hessian module — tsb analytics library. */ +export interface AdhesionSciHessianOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciHessianResult { values: number[]; converged: boolean; } +export function computeAdhesionSciHessian(data: number[], opts: AdhesionSciHessianOptions = {}): AdhesionSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciHessian }; diff --git a/src/adhesion_sci/hypothesis.ts b/src/adhesion_sci/hypothesis.ts new file mode 100644 index 000000000..cce0746da --- /dev/null +++ b/src/adhesion_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** adhesion_sci hypothesis module — tsb analytics library. */ +export interface AdhesionSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciHypothesisResult { values: number[]; converged: boolean; } +export function computeAdhesionSciHypothesis(data: number[], opts: AdhesionSciHypothesisOptions = {}): AdhesionSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciHypothesis }; diff --git a/src/adhesion_sci/inference.ts b/src/adhesion_sci/inference.ts new file mode 100644 index 000000000..8249ac45f --- /dev/null +++ b/src/adhesion_sci/inference.ts @@ -0,0 +1,14 @@ +/** adhesion_sci inference module — tsb analytics library. */ +export interface AdhesionSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciInferenceResult { values: number[]; converged: boolean; } +export function computeAdhesionSciInference(data: number[], opts: AdhesionSciInferenceOptions = {}): AdhesionSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciInference }; diff --git a/src/adhesion_sci/inference2.ts b/src/adhesion_sci/inference2.ts new file mode 100644 index 000000000..3e11f632a --- /dev/null +++ b/src/adhesion_sci/inference2.ts @@ -0,0 +1,14 @@ +/** adhesion_sci inference2 module — tsb analytics library. */ +export interface AdhesionSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciInferenceResult { values: number[]; converged: boolean; } +export function computeAdhesionSciInference(data: number[], opts: AdhesionSciInferenceOptions = {}): AdhesionSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciInference }; diff --git a/src/adhesion_sci/integral.ts b/src/adhesion_sci/integral.ts new file mode 100644 index 000000000..a844809a7 --- /dev/null +++ b/src/adhesion_sci/integral.ts @@ -0,0 +1,14 @@ +/** adhesion_sci integral module — tsb analytics library. */ +export interface AdhesionSciIntegralOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciIntegralResult { values: number[]; converged: boolean; } +export function computeAdhesionSciIntegral(data: number[], opts: AdhesionSciIntegralOptions = {}): AdhesionSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciIntegral }; diff --git a/src/adhesion_sci/integration.ts b/src/adhesion_sci/integration.ts new file mode 100644 index 000000000..7ef75e864 --- /dev/null +++ b/src/adhesion_sci/integration.ts @@ -0,0 +1,14 @@ +/** adhesion_sci integration module — tsb analytics library. */ +export interface AdhesionSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciIntegrationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciIntegration(data: number[], opts: AdhesionSciIntegrationOptions = {}): AdhesionSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciIntegration }; diff --git a/src/adhesion_sci/interpolation.ts b/src/adhesion_sci/interpolation.ts new file mode 100644 index 000000000..4df7cf732 --- /dev/null +++ b/src/adhesion_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci interpolation module — tsb analytics library. */ +export interface AdhesionSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciInterpolationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciInterpolation(data: number[], opts: AdhesionSciInterpolationOptions = {}): AdhesionSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciInterpolation }; diff --git a/src/adhesion_sci/jacobian.ts b/src/adhesion_sci/jacobian.ts new file mode 100644 index 000000000..128d0d2c1 --- /dev/null +++ b/src/adhesion_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** adhesion_sci jacobian module — tsb analytics library. */ +export interface AdhesionSciJacobianOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciJacobianResult { values: number[]; converged: boolean; } +export function computeAdhesionSciJacobian(data: number[], opts: AdhesionSciJacobianOptions = {}): AdhesionSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciJacobian }; diff --git a/src/adhesion_sci/kernel.ts b/src/adhesion_sci/kernel.ts new file mode 100644 index 000000000..89f925fe8 --- /dev/null +++ b/src/adhesion_sci/kernel.ts @@ -0,0 +1,14 @@ +/** adhesion_sci kernel module — tsb analytics library. */ +export interface AdhesionSciKernelOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciKernelResult { values: number[]; converged: boolean; } +export function computeAdhesionSciKernel(data: number[], opts: AdhesionSciKernelOptions = {}): AdhesionSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciKernel }; diff --git a/src/adhesion_sci/laplacian.ts b/src/adhesion_sci/laplacian.ts new file mode 100644 index 000000000..e466b8cbc --- /dev/null +++ b/src/adhesion_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** adhesion_sci laplacian module — tsb analytics library. */ +export interface AdhesionSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciLaplacianResult { values: number[]; converged: boolean; } +export function computeAdhesionSciLaplacian(data: number[], opts: AdhesionSciLaplacianOptions = {}): AdhesionSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciLaplacian }; diff --git a/src/adhesion_sci/learning.ts b/src/adhesion_sci/learning.ts new file mode 100644 index 000000000..68f395529 --- /dev/null +++ b/src/adhesion_sci/learning.ts @@ -0,0 +1,14 @@ +/** adhesion_sci learning module — tsb analytics library. */ +export interface AdhesionSciLearningOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciLearningResult { values: number[]; converged: boolean; } +export function computeAdhesionSciLearning(data: number[], opts: AdhesionSciLearningOptions = {}): AdhesionSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciLearning }; diff --git a/src/adhesion_sci/linear.ts b/src/adhesion_sci/linear.ts new file mode 100644 index 000000000..be18e3c8a --- /dev/null +++ b/src/adhesion_sci/linear.ts @@ -0,0 +1,14 @@ +/** adhesion_sci linear module — tsb analytics library. */ +export interface AdhesionSciLinearOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciLinearResult { values: number[]; converged: boolean; } +export function computeAdhesionSciLinear(data: number[], opts: AdhesionSciLinearOptions = {}): AdhesionSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciLinear }; diff --git a/src/adhesion_sci/manifold.ts b/src/adhesion_sci/manifold.ts new file mode 100644 index 000000000..7968c9cbb --- /dev/null +++ b/src/adhesion_sci/manifold.ts @@ -0,0 +1,14 @@ +/** adhesion_sci manifold module — tsb analytics library. */ +export interface AdhesionSciManifoldOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciManifoldResult { values: number[]; converged: boolean; } +export function computeAdhesionSciManifold(data: number[], opts: AdhesionSciManifoldOptions = {}): AdhesionSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciManifold }; diff --git a/src/adhesion_sci/matching.ts b/src/adhesion_sci/matching.ts new file mode 100644 index 000000000..26bdc4cc0 --- /dev/null +++ b/src/adhesion_sci/matching.ts @@ -0,0 +1,14 @@ +/** adhesion_sci matching module — tsb analytics library. */ +export interface AdhesionSciMatchingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciMatchingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciMatching(data: number[], opts: AdhesionSciMatchingOptions = {}): AdhesionSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciMatching }; diff --git a/src/adhesion_sci/measurement.ts b/src/adhesion_sci/measurement.ts new file mode 100644 index 000000000..e6755a686 --- /dev/null +++ b/src/adhesion_sci/measurement.ts @@ -0,0 +1,14 @@ +/** adhesion_sci measurement module — tsb analytics library. */ +export interface AdhesionSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciMeasurementResult { values: number[]; converged: boolean; } +export function computeAdhesionSciMeasurement(data: number[], opts: AdhesionSciMeasurementOptions = {}): AdhesionSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciMeasurement }; diff --git a/src/adhesion_sci/metrics.ts b/src/adhesion_sci/metrics.ts new file mode 100644 index 000000000..7f54b83af --- /dev/null +++ b/src/adhesion_sci/metrics.ts @@ -0,0 +1,14 @@ +/** adhesion_sci metrics module — tsb analytics library. */ +export interface AdhesionSciMetricsOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciMetricsResult { values: number[]; converged: boolean; } +export function computeAdhesionSciMetrics(data: number[], opts: AdhesionSciMetricsOptions = {}): AdhesionSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciMetrics }; diff --git a/src/adhesion_sci/modeling.ts b/src/adhesion_sci/modeling.ts new file mode 100644 index 000000000..911eb32e8 --- /dev/null +++ b/src/adhesion_sci/modeling.ts @@ -0,0 +1,14 @@ +/** adhesion_sci modeling module — tsb analytics library. */ +export interface AdhesionSciModelingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciModelingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciModeling(data: number[], opts: AdhesionSciModelingOptions = {}): AdhesionSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciModeling }; diff --git a/src/adhesion_sci/monitoring.ts b/src/adhesion_sci/monitoring.ts new file mode 100644 index 000000000..2ced4f8b0 --- /dev/null +++ b/src/adhesion_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** adhesion_sci monitoring module — tsb analytics library. */ +export interface AdhesionSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciMonitoringResult { values: number[]; converged: boolean; } +export function computeAdhesionSciMonitoring(data: number[], opts: AdhesionSciMonitoringOptions = {}): AdhesionSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciMonitoring }; diff --git a/src/adhesion_sci/nonlinear.ts b/src/adhesion_sci/nonlinear.ts new file mode 100644 index 000000000..ee9ab5c0c --- /dev/null +++ b/src/adhesion_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** adhesion_sci nonlinear module — tsb analytics library. */ +export interface AdhesionSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciNonlinearResult { values: number[]; converged: boolean; } +export function computeAdhesionSciNonlinear(data: number[], opts: AdhesionSciNonlinearOptions = {}): AdhesionSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciNonlinear }; diff --git a/src/adhesion_sci/normalization.ts b/src/adhesion_sci/normalization.ts new file mode 100644 index 000000000..cd265d6f6 --- /dev/null +++ b/src/adhesion_sci/normalization.ts @@ -0,0 +1,14 @@ +/** adhesion_sci normalization module — tsb analytics library. */ +export interface AdhesionSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciNormalizationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciNormalization(data: number[], opts: AdhesionSciNormalizationOptions = {}): AdhesionSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciNormalization }; diff --git a/src/adhesion_sci/optimization.ts b/src/adhesion_sci/optimization.ts new file mode 100644 index 000000000..73efebf6b --- /dev/null +++ b/src/adhesion_sci/optimization.ts @@ -0,0 +1,14 @@ +/** adhesion_sci optimization module — tsb analytics library. */ +export interface AdhesionSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciOptimizationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciOptimization(data: number[], opts: AdhesionSciOptimizationOptions = {}): AdhesionSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciOptimization }; diff --git a/src/adhesion_sci/patterns.ts b/src/adhesion_sci/patterns.ts new file mode 100644 index 000000000..b2e507725 --- /dev/null +++ b/src/adhesion_sci/patterns.ts @@ -0,0 +1,14 @@ +/** adhesion_sci patterns module — tsb analytics library. */ +export interface AdhesionSciPatternsOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciPatternsResult { values: number[]; converged: boolean; } +export function computeAdhesionSciPatterns(data: number[], opts: AdhesionSciPatternsOptions = {}): AdhesionSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciPatterns }; diff --git a/src/adhesion_sci/permutation.ts b/src/adhesion_sci/permutation.ts new file mode 100644 index 000000000..c49fdddff --- /dev/null +++ b/src/adhesion_sci/permutation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci permutation module — tsb analytics library. */ +export interface AdhesionSciPermutationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciPermutationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciPermutation(data: number[], opts: AdhesionSciPermutationOptions = {}): AdhesionSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciPermutation }; diff --git a/src/adhesion_sci/prediction.ts b/src/adhesion_sci/prediction.ts new file mode 100644 index 000000000..2d4cb794b --- /dev/null +++ b/src/adhesion_sci/prediction.ts @@ -0,0 +1,14 @@ +/** adhesion_sci prediction module — tsb analytics library. */ +export interface AdhesionSciPredictionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciPredictionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciPrediction(data: number[], opts: AdhesionSciPredictionOptions = {}): AdhesionSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciPrediction }; diff --git a/src/adhesion_sci/processing.ts b/src/adhesion_sci/processing.ts new file mode 100644 index 000000000..c08906e25 --- /dev/null +++ b/src/adhesion_sci/processing.ts @@ -0,0 +1,14 @@ +/** adhesion_sci processing module — tsb analytics library. */ +export interface AdhesionSciProcessingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciProcessingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciProcessing(data: number[], opts: AdhesionSciProcessingOptions = {}): AdhesionSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciProcessing }; diff --git a/src/adhesion_sci/profiling.ts b/src/adhesion_sci/profiling.ts new file mode 100644 index 000000000..47eea5be8 --- /dev/null +++ b/src/adhesion_sci/profiling.ts @@ -0,0 +1,14 @@ +/** adhesion_sci profiling module — tsb analytics library. */ +export interface AdhesionSciProfilingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciProfilingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciProfiling(data: number[], opts: AdhesionSciProfilingOptions = {}): AdhesionSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciProfiling }; diff --git a/src/adhesion_sci/projection.ts b/src/adhesion_sci/projection.ts new file mode 100644 index 000000000..8523ee8ab --- /dev/null +++ b/src/adhesion_sci/projection.ts @@ -0,0 +1,14 @@ +/** adhesion_sci projection module — tsb analytics library. */ +export interface AdhesionSciProjectionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciProjectionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciProjection(data: number[], opts: AdhesionSciProjectionOptions = {}): AdhesionSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciProjection }; diff --git a/src/adhesion_sci/ranking.ts b/src/adhesion_sci/ranking.ts new file mode 100644 index 000000000..e17637690 --- /dev/null +++ b/src/adhesion_sci/ranking.ts @@ -0,0 +1,14 @@ +/** adhesion_sci ranking module — tsb analytics library. */ +export interface AdhesionSciRankingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciRankingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciRanking(data: number[], opts: AdhesionSciRankingOptions = {}): AdhesionSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciRanking }; diff --git a/src/adhesion_sci/reconstruction.ts b/src/adhesion_sci/reconstruction.ts new file mode 100644 index 000000000..d27c71fd7 --- /dev/null +++ b/src/adhesion_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** adhesion_sci reconstruction module — tsb analytics library. */ +export interface AdhesionSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciReconstructionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciReconstruction(data: number[], opts: AdhesionSciReconstructionOptions = {}): AdhesionSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciReconstruction }; diff --git a/src/adhesion_sci/registration.ts b/src/adhesion_sci/registration.ts new file mode 100644 index 000000000..9dc68bfaa --- /dev/null +++ b/src/adhesion_sci/registration.ts @@ -0,0 +1,14 @@ +/** adhesion_sci registration module — tsb analytics library. */ +export interface AdhesionSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciRegistrationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciRegistration(data: number[], opts: AdhesionSciRegistrationOptions = {}): AdhesionSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciRegistration }; diff --git a/src/adhesion_sci/regression.ts b/src/adhesion_sci/regression.ts new file mode 100644 index 000000000..208b61d39 --- /dev/null +++ b/src/adhesion_sci/regression.ts @@ -0,0 +1,14 @@ +/** adhesion_sci regression module — tsb analytics library. */ +export interface AdhesionSciRegressionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciRegressionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciRegression(data: number[], opts: AdhesionSciRegressionOptions = {}): AdhesionSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciRegression }; diff --git a/src/adhesion_sci/regularization.ts b/src/adhesion_sci/regularization.ts new file mode 100644 index 000000000..26d6f2357 --- /dev/null +++ b/src/adhesion_sci/regularization.ts @@ -0,0 +1,14 @@ +/** adhesion_sci regularization module — tsb analytics library. */ +export interface AdhesionSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciRegularizationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciRegularization(data: number[], opts: AdhesionSciRegularizationOptions = {}): AdhesionSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciRegularization }; diff --git a/src/adhesion_sci/robustness.ts b/src/adhesion_sci/robustness.ts new file mode 100644 index 000000000..58b9ae434 --- /dev/null +++ b/src/adhesion_sci/robustness.ts @@ -0,0 +1,14 @@ +/** adhesion_sci robustness module — tsb analytics library. */ +export interface AdhesionSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciRobustnessResult { values: number[]; converged: boolean; } +export function computeAdhesionSciRobustness(data: number[], opts: AdhesionSciRobustnessOptions = {}): AdhesionSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciRobustness }; diff --git a/src/adhesion_sci/sampling.ts b/src/adhesion_sci/sampling.ts new file mode 100644 index 000000000..15de59d85 --- /dev/null +++ b/src/adhesion_sci/sampling.ts @@ -0,0 +1,14 @@ +/** adhesion_sci sampling module — tsb analytics library. */ +export interface AdhesionSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSamplingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSampling(data: number[], opts: AdhesionSciSamplingOptions = {}): AdhesionSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSampling }; diff --git a/src/adhesion_sci/sampling2.ts b/src/adhesion_sci/sampling2.ts new file mode 100644 index 000000000..a4e2c3bde --- /dev/null +++ b/src/adhesion_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** adhesion_sci sampling2 module — tsb analytics library. */ +export interface AdhesionSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSamplingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSampling(data: number[], opts: AdhesionSciSamplingOptions = {}): AdhesionSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSampling }; diff --git a/src/adhesion_sci/scaling.ts b/src/adhesion_sci/scaling.ts new file mode 100644 index 000000000..4f6ae7d09 --- /dev/null +++ b/src/adhesion_sci/scaling.ts @@ -0,0 +1,14 @@ +/** adhesion_sci scaling module — tsb analytics library. */ +export interface AdhesionSciScalingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciScalingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciScaling(data: number[], opts: AdhesionSciScalingOptions = {}): AdhesionSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciScaling }; diff --git a/src/adhesion_sci/scoring.ts b/src/adhesion_sci/scoring.ts new file mode 100644 index 000000000..08c4f02c7 --- /dev/null +++ b/src/adhesion_sci/scoring.ts @@ -0,0 +1,14 @@ +/** adhesion_sci scoring module — tsb analytics library. */ +export interface AdhesionSciScoringOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciScoringResult { values: number[]; converged: boolean; } +export function computeAdhesionSciScoring(data: number[], opts: AdhesionSciScoringOptions = {}): AdhesionSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciScoring }; diff --git a/src/adhesion_sci/segmentation.ts b/src/adhesion_sci/segmentation.ts new file mode 100644 index 000000000..4b7dd5fc3 --- /dev/null +++ b/src/adhesion_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci segmentation module — tsb analytics library. */ +export interface AdhesionSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSegmentationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSegmentation(data: number[], opts: AdhesionSciSegmentationOptions = {}): AdhesionSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSegmentation }; diff --git a/src/adhesion_sci/selection.ts b/src/adhesion_sci/selection.ts new file mode 100644 index 000000000..60fc202e8 --- /dev/null +++ b/src/adhesion_sci/selection.ts @@ -0,0 +1,14 @@ +/** adhesion_sci selection module — tsb analytics library. */ +export interface AdhesionSciSelectionOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSelectionResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSelection(data: number[], opts: AdhesionSciSelectionOptions = {}): AdhesionSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSelection }; diff --git a/src/adhesion_sci/sensitivity.ts b/src/adhesion_sci/sensitivity.ts new file mode 100644 index 000000000..fd14782ee --- /dev/null +++ b/src/adhesion_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** adhesion_sci sensitivity module — tsb analytics library. */ +export interface AdhesionSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSensitivityResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSensitivity(data: number[], opts: AdhesionSciSensitivityOptions = {}): AdhesionSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSensitivity }; diff --git a/src/adhesion_sci/simulation.ts b/src/adhesion_sci/simulation.ts new file mode 100644 index 000000000..ceda788ae --- /dev/null +++ b/src/adhesion_sci/simulation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci simulation module — tsb analytics library. */ +export interface AdhesionSciSimulationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSimulationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSimulation(data: number[], opts: AdhesionSciSimulationOptions = {}): AdhesionSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSimulation }; diff --git a/src/adhesion_sci/smoothing.ts b/src/adhesion_sci/smoothing.ts new file mode 100644 index 000000000..985af4db1 --- /dev/null +++ b/src/adhesion_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** adhesion_sci smoothing module — tsb analytics library. */ +export interface AdhesionSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSmoothingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSmoothing(data: number[], opts: AdhesionSciSmoothingOptions = {}): AdhesionSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSmoothing }; diff --git a/src/adhesion_sci/stability.ts b/src/adhesion_sci/stability.ts new file mode 100644 index 000000000..75f669c8a --- /dev/null +++ b/src/adhesion_sci/stability.ts @@ -0,0 +1,14 @@ +/** adhesion_sci stability module — tsb analytics library. */ +export interface AdhesionSciStabilityOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciStabilityResult { values: number[]; converged: boolean; } +export function computeAdhesionSciStability(data: number[], opts: AdhesionSciStabilityOptions = {}): AdhesionSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciStability }; diff --git a/src/adhesion_sci/stacking.ts b/src/adhesion_sci/stacking.ts new file mode 100644 index 000000000..657adc2f2 --- /dev/null +++ b/src/adhesion_sci/stacking.ts @@ -0,0 +1,14 @@ +/** adhesion_sci stacking module — tsb analytics library. */ +export interface AdhesionSciStackingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciStackingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciStacking(data: number[], opts: AdhesionSciStackingOptions = {}): AdhesionSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciStacking }; diff --git a/src/adhesion_sci/standardization.ts b/src/adhesion_sci/standardization.ts new file mode 100644 index 000000000..d50fd812c --- /dev/null +++ b/src/adhesion_sci/standardization.ts @@ -0,0 +1,14 @@ +/** adhesion_sci standardization module — tsb analytics library. */ +export interface AdhesionSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciStandardizationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciStandardization(data: number[], opts: AdhesionSciStandardizationOptions = {}): AdhesionSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciStandardization }; diff --git a/src/adhesion_sci/static.ts b/src/adhesion_sci/static.ts new file mode 100644 index 000000000..ab9c73162 --- /dev/null +++ b/src/adhesion_sci/static.ts @@ -0,0 +1,14 @@ +/** adhesion_sci static module — tsb analytics library. */ +export interface AdhesionSciStaticOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciStaticResult { values: number[]; converged: boolean; } +export function computeAdhesionSciStatic(data: number[], opts: AdhesionSciStaticOptions = {}): AdhesionSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciStatic }; diff --git a/src/adhesion_sci/stochastic.ts b/src/adhesion_sci/stochastic.ts new file mode 100644 index 000000000..e88f8c722 --- /dev/null +++ b/src/adhesion_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** adhesion_sci stochastic module — tsb analytics library. */ +export interface AdhesionSciStochasticOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciStochasticResult { values: number[]; converged: boolean; } +export function computeAdhesionSciStochastic(data: number[], opts: AdhesionSciStochasticOptions = {}): AdhesionSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciStochastic }; diff --git a/src/adhesion_sci/synthesis.ts b/src/adhesion_sci/synthesis.ts new file mode 100644 index 000000000..5e763c0eb --- /dev/null +++ b/src/adhesion_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** adhesion_sci synthesis module — tsb analytics library. */ +export interface AdhesionSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciSynthesisResult { values: number[]; converged: boolean; } +export function computeAdhesionSciSynthesis(data: number[], opts: AdhesionSciSynthesisOptions = {}): AdhesionSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciSynthesis }; diff --git a/src/adhesion_sci/topology.ts b/src/adhesion_sci/topology.ts new file mode 100644 index 000000000..7d18814b5 --- /dev/null +++ b/src/adhesion_sci/topology.ts @@ -0,0 +1,14 @@ +/** adhesion_sci topology module — tsb analytics library. */ +export interface AdhesionSciTopologyOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciTopologyResult { values: number[]; converged: boolean; } +export function computeAdhesionSciTopology(data: number[], opts: AdhesionSciTopologyOptions = {}): AdhesionSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciTopology }; diff --git a/src/adhesion_sci/tracking.ts b/src/adhesion_sci/tracking.ts new file mode 100644 index 000000000..fb9f246b2 --- /dev/null +++ b/src/adhesion_sci/tracking.ts @@ -0,0 +1,14 @@ +/** adhesion_sci tracking module — tsb analytics library. */ +export interface AdhesionSciTrackingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciTrackingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciTracking(data: number[], opts: AdhesionSciTrackingOptions = {}): AdhesionSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciTracking }; diff --git a/src/adhesion_sci/transform.ts b/src/adhesion_sci/transform.ts new file mode 100644 index 000000000..a36c192ca --- /dev/null +++ b/src/adhesion_sci/transform.ts @@ -0,0 +1,14 @@ +/** adhesion_sci transform module — tsb analytics library. */ +export interface AdhesionSciTransformOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciTransformResult { values: number[]; converged: boolean; } +export function computeAdhesionSciTransform(data: number[], opts: AdhesionSciTransformOptions = {}): AdhesionSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciTransform }; diff --git a/src/adhesion_sci/uncertainty.ts b/src/adhesion_sci/uncertainty.ts new file mode 100644 index 000000000..db6a352eb --- /dev/null +++ b/src/adhesion_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** adhesion_sci uncertainty module — tsb analytics library. */ +export interface AdhesionSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeAdhesionSciUncertainty(data: number[], opts: AdhesionSciUncertaintyOptions = {}): AdhesionSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciUncertainty }; diff --git a/src/adhesion_sci/validation.ts b/src/adhesion_sci/validation.ts new file mode 100644 index 000000000..a2b5aa976 --- /dev/null +++ b/src/adhesion_sci/validation.ts @@ -0,0 +1,14 @@ +/** adhesion_sci validation module — tsb analytics library. */ +export interface AdhesionSciValidationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciValidationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciValidation(data: number[], opts: AdhesionSciValidationOptions = {}): AdhesionSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciValidation }; diff --git a/src/adhesion_sci/verification.ts b/src/adhesion_sci/verification.ts new file mode 100644 index 000000000..1f2b280a1 --- /dev/null +++ b/src/adhesion_sci/verification.ts @@ -0,0 +1,14 @@ +/** adhesion_sci verification module — tsb analytics library. */ +export interface AdhesionSciVerificationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciVerificationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciVerification(data: number[], opts: AdhesionSciVerificationOptions = {}): AdhesionSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciVerification }; diff --git a/src/adhesion_sci/visualization.ts b/src/adhesion_sci/visualization.ts new file mode 100644 index 000000000..4c700cf4f --- /dev/null +++ b/src/adhesion_sci/visualization.ts @@ -0,0 +1,14 @@ +/** adhesion_sci visualization module — tsb analytics library. */ +export interface AdhesionSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciVisualizationResult { values: number[]; converged: boolean; } +export function computeAdhesionSciVisualization(data: number[], opts: AdhesionSciVisualizationOptions = {}): AdhesionSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciVisualization }; diff --git a/src/adhesion_sci/voting.ts b/src/adhesion_sci/voting.ts new file mode 100644 index 000000000..e89e5a0ce --- /dev/null +++ b/src/adhesion_sci/voting.ts @@ -0,0 +1,14 @@ +/** adhesion_sci voting module — tsb analytics library. */ +export interface AdhesionSciVotingOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciVotingResult { values: number[]; converged: boolean; } +export function computeAdhesionSciVoting(data: number[], opts: AdhesionSciVotingOptions = {}): AdhesionSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciVoting }; diff --git a/src/adhesion_sci/wavelet.ts b/src/adhesion_sci/wavelet.ts new file mode 100644 index 000000000..01f4466d6 --- /dev/null +++ b/src/adhesion_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** adhesion_sci wavelet module — tsb analytics library. */ +export interface AdhesionSciWaveletOptions { tol?: number; maxIter?: number; } +export interface AdhesionSciWaveletResult { values: number[]; converged: boolean; } +export function computeAdhesionSciWavelet(data: number[], opts: AdhesionSciWaveletOptions = {}): AdhesionSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAdhesionSciWavelet }; diff --git a/src/agricultural_sci/adaptation.ts b/src/agricultural_sci/adaptation.ts new file mode 100644 index 000000000..a3cd77dea --- /dev/null +++ b/src/agricultural_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci adaptation module — tsb analytics library. */ +export interface AgriculturalSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciAdaptationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciAdaptation(data: number[], opts: AgriculturalSciAdaptationOptions = {}): AgriculturalSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciAdaptation }; diff --git a/src/agricultural_sci/aggregation.ts b/src/agricultural_sci/aggregation.ts new file mode 100644 index 000000000..2483b3060 --- /dev/null +++ b/src/agricultural_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci aggregation module — tsb analytics library. */ +export interface AgriculturalSciAggregationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciAggregationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciAggregation(data: number[], opts: AgriculturalSciAggregationOptions = {}): AgriculturalSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciAggregation }; diff --git a/src/agricultural_sci/algebra.ts b/src/agricultural_sci/algebra.ts new file mode 100644 index 000000000..04b3e4b13 --- /dev/null +++ b/src/agricultural_sci/algebra.ts @@ -0,0 +1,14 @@ +/** agricultural_sci algebra module — tsb analytics library. */ +export interface AgriculturalSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciAlgebraResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciAlgebra(data: number[], opts: AgriculturalSciAlgebraOptions = {}): AgriculturalSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciAlgebra }; diff --git a/src/agricultural_sci/alignment.ts b/src/agricultural_sci/alignment.ts new file mode 100644 index 000000000..d0e76caa6 --- /dev/null +++ b/src/agricultural_sci/alignment.ts @@ -0,0 +1,14 @@ +/** agricultural_sci alignment module — tsb analytics library. */ +export interface AgriculturalSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciAlignmentResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciAlignment(data: number[], opts: AgriculturalSciAlignmentOptions = {}): AgriculturalSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciAlignment }; diff --git a/src/agricultural_sci/analysis.ts b/src/agricultural_sci/analysis.ts new file mode 100644 index 000000000..7c7a8c02a --- /dev/null +++ b/src/agricultural_sci/analysis.ts @@ -0,0 +1,14 @@ +/** agricultural_sci analysis module — tsb analytics library. */ +export interface AgriculturalSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciAnalysisResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciAnalysis(data: number[], opts: AgriculturalSciAnalysisOptions = {}): AgriculturalSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciAnalysis }; diff --git a/src/agricultural_sci/augmentation.ts b/src/agricultural_sci/augmentation.ts new file mode 100644 index 000000000..ffe86ebdd --- /dev/null +++ b/src/agricultural_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci augmentation module — tsb analytics library. */ +export interface AgriculturalSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciAugmentationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciAugmentation(data: number[], opts: AgriculturalSciAugmentationOptions = {}): AgriculturalSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciAugmentation }; diff --git a/src/agricultural_sci/bagging.ts b/src/agricultural_sci/bagging.ts new file mode 100644 index 000000000..a6295ba82 --- /dev/null +++ b/src/agricultural_sci/bagging.ts @@ -0,0 +1,14 @@ +/** agricultural_sci bagging module — tsb analytics library. */ +export interface AgriculturalSciBaggingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciBaggingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciBagging(data: number[], opts: AgriculturalSciBaggingOptions = {}): AgriculturalSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciBagging }; diff --git a/src/agricultural_sci/basis.ts b/src/agricultural_sci/basis.ts new file mode 100644 index 000000000..cd6148a14 --- /dev/null +++ b/src/agricultural_sci/basis.ts @@ -0,0 +1,14 @@ +/** agricultural_sci basis module — tsb analytics library. */ +export interface AgriculturalSciBasisOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciBasisResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciBasis(data: number[], opts: AgriculturalSciBasisOptions = {}): AgriculturalSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciBasis }; diff --git a/src/agricultural_sci/benchmarking.ts b/src/agricultural_sci/benchmarking.ts new file mode 100644 index 000000000..54a3ebf22 --- /dev/null +++ b/src/agricultural_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** agricultural_sci benchmarking module — tsb analytics library. */ +export interface AgriculturalSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciBenchmarking(data: number[], opts: AgriculturalSciBenchmarkingOptions = {}): AgriculturalSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciBenchmarking }; diff --git a/src/agricultural_sci/blending.ts b/src/agricultural_sci/blending.ts new file mode 100644 index 000000000..59866a169 --- /dev/null +++ b/src/agricultural_sci/blending.ts @@ -0,0 +1,14 @@ +/** agricultural_sci blending module — tsb analytics library. */ +export interface AgriculturalSciBlendingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciBlendingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciBlending(data: number[], opts: AgriculturalSciBlendingOptions = {}): AgriculturalSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciBlending }; diff --git a/src/agricultural_sci/boosting.ts b/src/agricultural_sci/boosting.ts new file mode 100644 index 000000000..624ca229a --- /dev/null +++ b/src/agricultural_sci/boosting.ts @@ -0,0 +1,14 @@ +/** agricultural_sci boosting module — tsb analytics library. */ +export interface AgriculturalSciBoostingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciBoostingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciBoosting(data: number[], opts: AgriculturalSciBoostingOptions = {}): AgriculturalSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciBoosting }; diff --git a/src/agricultural_sci/bootstrap.ts b/src/agricultural_sci/bootstrap.ts new file mode 100644 index 000000000..4995a25da --- /dev/null +++ b/src/agricultural_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** agricultural_sci bootstrap module — tsb analytics library. */ +export interface AgriculturalSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciBootstrapResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciBootstrap(data: number[], opts: AgriculturalSciBootstrapOptions = {}): AgriculturalSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciBootstrap }; diff --git a/src/agricultural_sci/calculus.ts b/src/agricultural_sci/calculus.ts new file mode 100644 index 000000000..d3d47941e --- /dev/null +++ b/src/agricultural_sci/calculus.ts @@ -0,0 +1,14 @@ +/** agricultural_sci calculus module — tsb analytics library. */ +export interface AgriculturalSciCalculusOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCalculusResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCalculus(data: number[], opts: AgriculturalSciCalculusOptions = {}): AgriculturalSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCalculus }; diff --git a/src/agricultural_sci/calibration.ts b/src/agricultural_sci/calibration.ts new file mode 100644 index 000000000..db98ead09 --- /dev/null +++ b/src/agricultural_sci/calibration.ts @@ -0,0 +1,14 @@ +/** agricultural_sci calibration module — tsb analytics library. */ +export interface AgriculturalSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCalibrationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCalibration(data: number[], opts: AgriculturalSciCalibrationOptions = {}): AgriculturalSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCalibration }; diff --git a/src/agricultural_sci/characterization.ts b/src/agricultural_sci/characterization.ts new file mode 100644 index 000000000..78c6f9e1a --- /dev/null +++ b/src/agricultural_sci/characterization.ts @@ -0,0 +1,14 @@ +/** agricultural_sci characterization module — tsb analytics library. */ +export interface AgriculturalSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCharacterization(data: number[], opts: AgriculturalSciCharacterizationOptions = {}): AgriculturalSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCharacterization }; diff --git a/src/agricultural_sci/classification.ts b/src/agricultural_sci/classification.ts new file mode 100644 index 000000000..658dc8d26 --- /dev/null +++ b/src/agricultural_sci/classification.ts @@ -0,0 +1,14 @@ +/** agricultural_sci classification module — tsb analytics library. */ +export interface AgriculturalSciClassificationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciClassificationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciClassification(data: number[], opts: AgriculturalSciClassificationOptions = {}): AgriculturalSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciClassification }; diff --git a/src/agricultural_sci/clustering.ts b/src/agricultural_sci/clustering.ts new file mode 100644 index 000000000..b55564a4e --- /dev/null +++ b/src/agricultural_sci/clustering.ts @@ -0,0 +1,14 @@ +/** agricultural_sci clustering module — tsb analytics library. */ +export interface AgriculturalSciClusteringOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciClusteringResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciClustering(data: number[], opts: AgriculturalSciClusteringOptions = {}): AgriculturalSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciClustering }; diff --git a/src/agricultural_sci/compression.ts b/src/agricultural_sci/compression.ts new file mode 100644 index 000000000..bf61799c7 --- /dev/null +++ b/src/agricultural_sci/compression.ts @@ -0,0 +1,14 @@ +/** agricultural_sci compression module — tsb analytics library. */ +export interface AgriculturalSciCompressionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCompressionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCompression(data: number[], opts: AgriculturalSciCompressionOptions = {}): AgriculturalSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCompression }; diff --git a/src/agricultural_sci/continuous.ts b/src/agricultural_sci/continuous.ts new file mode 100644 index 000000000..8590fd0fe --- /dev/null +++ b/src/agricultural_sci/continuous.ts @@ -0,0 +1,14 @@ +/** agricultural_sci continuous module — tsb analytics library. */ +export interface AgriculturalSciContinuousOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciContinuousResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciContinuous(data: number[], opts: AgriculturalSciContinuousOptions = {}): AgriculturalSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciContinuous }; diff --git a/src/agricultural_sci/control.ts b/src/agricultural_sci/control.ts new file mode 100644 index 000000000..e8b154258 --- /dev/null +++ b/src/agricultural_sci/control.ts @@ -0,0 +1,14 @@ +/** agricultural_sci control module — tsb analytics library. */ +export interface AgriculturalSciControlOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciControlResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciControl(data: number[], opts: AgriculturalSciControlOptions = {}): AgriculturalSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciControl }; diff --git a/src/agricultural_sci/convergence.ts b/src/agricultural_sci/convergence.ts new file mode 100644 index 000000000..e404d61d6 --- /dev/null +++ b/src/agricultural_sci/convergence.ts @@ -0,0 +1,14 @@ +/** agricultural_sci convergence module — tsb analytics library. */ +export interface AgriculturalSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciConvergenceResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciConvergence(data: number[], opts: AgriculturalSciConvergenceOptions = {}): AgriculturalSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciConvergence }; diff --git a/src/agricultural_sci/convex.ts b/src/agricultural_sci/convex.ts new file mode 100644 index 000000000..fc89d9f65 --- /dev/null +++ b/src/agricultural_sci/convex.ts @@ -0,0 +1,14 @@ +/** agricultural_sci convex module — tsb analytics library. */ +export interface AgriculturalSciConvexOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciConvexResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciConvex(data: number[], opts: AgriculturalSciConvexOptions = {}): AgriculturalSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciConvex }; diff --git a/src/agricultural_sci/correlation.ts b/src/agricultural_sci/correlation.ts new file mode 100644 index 000000000..c2d84b57a --- /dev/null +++ b/src/agricultural_sci/correlation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci correlation module — tsb analytics library. */ +export interface AgriculturalSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCorrelationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCorrelation(data: number[], opts: AgriculturalSciCorrelationOptions = {}): AgriculturalSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCorrelation }; diff --git a/src/agricultural_sci/covariance.ts b/src/agricultural_sci/covariance.ts new file mode 100644 index 000000000..438d238c7 --- /dev/null +++ b/src/agricultural_sci/covariance.ts @@ -0,0 +1,14 @@ +/** agricultural_sci covariance module — tsb analytics library. */ +export interface AgriculturalSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCovarianceResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCovariance(data: number[], opts: AgriculturalSciCovarianceOptions = {}): AgriculturalSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCovariance }; diff --git a/src/agricultural_sci/cross_validation.ts b/src/agricultural_sci/cross_validation.ts new file mode 100644 index 000000000..c565d5462 --- /dev/null +++ b/src/agricultural_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci cross_validation module — tsb analytics library. */ +export interface AgriculturalSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciCrossValidation(data: number[], opts: AgriculturalSciCrossValidationOptions = {}): AgriculturalSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciCrossValidation }; diff --git a/src/agricultural_sci/decoding.ts b/src/agricultural_sci/decoding.ts new file mode 100644 index 000000000..e0bf27a24 --- /dev/null +++ b/src/agricultural_sci/decoding.ts @@ -0,0 +1,14 @@ +/** agricultural_sci decoding module — tsb analytics library. */ +export interface AgriculturalSciDecodingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDecodingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDecoding(data: number[], opts: AgriculturalSciDecodingOptions = {}): AgriculturalSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDecoding }; diff --git a/src/agricultural_sci/decomposition.ts b/src/agricultural_sci/decomposition.ts new file mode 100644 index 000000000..1876e5777 --- /dev/null +++ b/src/agricultural_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** agricultural_sci decomposition module — tsb analytics library. */ +export interface AgriculturalSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDecompositionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDecomposition(data: number[], opts: AgriculturalSciDecompositionOptions = {}): AgriculturalSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDecomposition }; diff --git a/src/agricultural_sci/detection.ts b/src/agricultural_sci/detection.ts new file mode 100644 index 000000000..262404c7c --- /dev/null +++ b/src/agricultural_sci/detection.ts @@ -0,0 +1,14 @@ +/** agricultural_sci detection module — tsb analytics library. */ +export interface AgriculturalSciDetectionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDetectionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDetection(data: number[], opts: AgriculturalSciDetectionOptions = {}): AgriculturalSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDetection }; diff --git a/src/agricultural_sci/deterministic.ts b/src/agricultural_sci/deterministic.ts new file mode 100644 index 000000000..35fe57934 --- /dev/null +++ b/src/agricultural_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** agricultural_sci deterministic module — tsb analytics library. */ +export interface AgriculturalSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDeterministicResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDeterministic(data: number[], opts: AgriculturalSciDeterministicOptions = {}): AgriculturalSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDeterministic }; diff --git a/src/agricultural_sci/diagnostics.ts b/src/agricultural_sci/diagnostics.ts new file mode 100644 index 000000000..4fb6de502 --- /dev/null +++ b/src/agricultural_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** agricultural_sci diagnostics module — tsb analytics library. */ +export interface AgriculturalSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDiagnostics(data: number[], opts: AgriculturalSciDiagnosticsOptions = {}): AgriculturalSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDiagnostics }; diff --git a/src/agricultural_sci/differential.ts b/src/agricultural_sci/differential.ts new file mode 100644 index 000000000..1eccb659a --- /dev/null +++ b/src/agricultural_sci/differential.ts @@ -0,0 +1,14 @@ +/** agricultural_sci differential module — tsb analytics library. */ +export interface AgriculturalSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDifferentialResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDifferential(data: number[], opts: AgriculturalSciDifferentialOptions = {}): AgriculturalSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDifferential }; diff --git a/src/agricultural_sci/discrete.ts b/src/agricultural_sci/discrete.ts new file mode 100644 index 000000000..6084e2227 --- /dev/null +++ b/src/agricultural_sci/discrete.ts @@ -0,0 +1,14 @@ +/** agricultural_sci discrete module — tsb analytics library. */ +export interface AgriculturalSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDiscreteResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDiscrete(data: number[], opts: AgriculturalSciDiscreteOptions = {}): AgriculturalSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDiscrete }; diff --git a/src/agricultural_sci/distribution.ts b/src/agricultural_sci/distribution.ts new file mode 100644 index 000000000..cff6e6f1c --- /dev/null +++ b/src/agricultural_sci/distribution.ts @@ -0,0 +1,14 @@ +/** agricultural_sci distribution module — tsb analytics library. */ +export interface AgriculturalSciDistributionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDistributionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDistribution(data: number[], opts: AgriculturalSciDistributionOptions = {}): AgriculturalSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDistribution }; diff --git a/src/agricultural_sci/dynamic.ts b/src/agricultural_sci/dynamic.ts new file mode 100644 index 000000000..a4d33f6dc --- /dev/null +++ b/src/agricultural_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** agricultural_sci dynamic module — tsb analytics library. */ +export interface AgriculturalSciDynamicOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciDynamicResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciDynamic(data: number[], opts: AgriculturalSciDynamicOptions = {}): AgriculturalSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciDynamic }; diff --git a/src/agricultural_sci/embedding.ts b/src/agricultural_sci/embedding.ts new file mode 100644 index 000000000..69dbb15e4 --- /dev/null +++ b/src/agricultural_sci/embedding.ts @@ -0,0 +1,14 @@ +/** agricultural_sci embedding module — tsb analytics library. */ +export interface AgriculturalSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciEmbedding(data: number[], opts: AgriculturalSciEmbeddingOptions = {}): AgriculturalSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciEmbedding }; diff --git a/src/agricultural_sci/encoding.ts b/src/agricultural_sci/encoding.ts new file mode 100644 index 000000000..7739133f5 --- /dev/null +++ b/src/agricultural_sci/encoding.ts @@ -0,0 +1,14 @@ +/** agricultural_sci encoding module — tsb analytics library. */ +export interface AgriculturalSciEncodingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciEncodingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciEncoding(data: number[], opts: AgriculturalSciEncodingOptions = {}): AgriculturalSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciEncoding }; diff --git a/src/agricultural_sci/ensemble.ts b/src/agricultural_sci/ensemble.ts new file mode 100644 index 000000000..f2af58f8e --- /dev/null +++ b/src/agricultural_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** agricultural_sci ensemble module — tsb analytics library. */ +export interface AgriculturalSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciEnsembleResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciEnsemble(data: number[], opts: AgriculturalSciEnsembleOptions = {}): AgriculturalSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciEnsemble }; diff --git a/src/agricultural_sci/estimation.ts b/src/agricultural_sci/estimation.ts new file mode 100644 index 000000000..71b16bfed --- /dev/null +++ b/src/agricultural_sci/estimation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci estimation module — tsb analytics library. */ +export interface AgriculturalSciEstimationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciEstimationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciEstimation(data: number[], opts: AgriculturalSciEstimationOptions = {}): AgriculturalSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciEstimation }; diff --git a/src/agricultural_sci/evaluation.ts b/src/agricultural_sci/evaluation.ts new file mode 100644 index 000000000..41a210c8e --- /dev/null +++ b/src/agricultural_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci evaluation module — tsb analytics library. */ +export interface AgriculturalSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciEvaluationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciEvaluation(data: number[], opts: AgriculturalSciEvaluationOptions = {}): AgriculturalSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciEvaluation }; diff --git a/src/agricultural_sci/extrapolation.ts b/src/agricultural_sci/extrapolation.ts new file mode 100644 index 000000000..8d578a73a --- /dev/null +++ b/src/agricultural_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci extrapolation module — tsb analytics library. */ +export interface AgriculturalSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciExtrapolation(data: number[], opts: AgriculturalSciExtrapolationOptions = {}): AgriculturalSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciExtrapolation }; diff --git a/src/agricultural_sci/features.ts b/src/agricultural_sci/features.ts new file mode 100644 index 000000000..75253f145 --- /dev/null +++ b/src/agricultural_sci/features.ts @@ -0,0 +1,14 @@ +/** agricultural_sci features module — tsb analytics library. */ +export interface AgriculturalSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciFeaturesResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciFeatures(data: number[], opts: AgriculturalSciFeaturesOptions = {}): AgriculturalSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciFeatures }; diff --git a/src/agricultural_sci/feedback.ts b/src/agricultural_sci/feedback.ts new file mode 100644 index 000000000..7ce35f30b --- /dev/null +++ b/src/agricultural_sci/feedback.ts @@ -0,0 +1,14 @@ +/** agricultural_sci feedback module — tsb analytics library. */ +export interface AgriculturalSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciFeedbackResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciFeedback(data: number[], opts: AgriculturalSciFeedbackOptions = {}): AgriculturalSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciFeedback }; diff --git a/src/agricultural_sci/filtering.ts b/src/agricultural_sci/filtering.ts new file mode 100644 index 000000000..09d9f341a --- /dev/null +++ b/src/agricultural_sci/filtering.ts @@ -0,0 +1,14 @@ +/** agricultural_sci filtering module — tsb analytics library. */ +export interface AgriculturalSciFilteringOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciFilteringResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciFiltering(data: number[], opts: AgriculturalSciFilteringOptions = {}): AgriculturalSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciFiltering }; diff --git a/src/agricultural_sci/fourier.ts b/src/agricultural_sci/fourier.ts new file mode 100644 index 000000000..d0136a0f0 --- /dev/null +++ b/src/agricultural_sci/fourier.ts @@ -0,0 +1,14 @@ +/** agricultural_sci fourier module — tsb analytics library. */ +export interface AgriculturalSciFourierOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciFourierResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciFourier(data: number[], opts: AgriculturalSciFourierOptions = {}): AgriculturalSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciFourier }; diff --git a/src/agricultural_sci/fusion.ts b/src/agricultural_sci/fusion.ts new file mode 100644 index 000000000..0c0419b33 --- /dev/null +++ b/src/agricultural_sci/fusion.ts @@ -0,0 +1,14 @@ +/** agricultural_sci fusion module — tsb analytics library. */ +export interface AgriculturalSciFusionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciFusionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciFusion(data: number[], opts: AgriculturalSciFusionOptions = {}): AgriculturalSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciFusion }; diff --git a/src/agricultural_sci/generation.ts b/src/agricultural_sci/generation.ts new file mode 100644 index 000000000..bb2fac031 --- /dev/null +++ b/src/agricultural_sci/generation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci generation module — tsb analytics library. */ +export interface AgriculturalSciGenerationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciGenerationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciGeneration(data: number[], opts: AgriculturalSciGenerationOptions = {}): AgriculturalSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciGeneration }; diff --git a/src/agricultural_sci/geometry.ts b/src/agricultural_sci/geometry.ts new file mode 100644 index 000000000..871914f23 --- /dev/null +++ b/src/agricultural_sci/geometry.ts @@ -0,0 +1,14 @@ +/** agricultural_sci geometry module — tsb analytics library. */ +export interface AgriculturalSciGeometryOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciGeometryResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciGeometry(data: number[], opts: AgriculturalSciGeometryOptions = {}): AgriculturalSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciGeometry }; diff --git a/src/agricultural_sci/gradient.ts b/src/agricultural_sci/gradient.ts new file mode 100644 index 000000000..b8a0982cf --- /dev/null +++ b/src/agricultural_sci/gradient.ts @@ -0,0 +1,14 @@ +/** agricultural_sci gradient module — tsb analytics library. */ +export interface AgriculturalSciGradientOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciGradientResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciGradient(data: number[], opts: AgriculturalSciGradientOptions = {}): AgriculturalSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciGradient }; diff --git a/src/agricultural_sci/hessian.ts b/src/agricultural_sci/hessian.ts new file mode 100644 index 000000000..b2e828545 --- /dev/null +++ b/src/agricultural_sci/hessian.ts @@ -0,0 +1,14 @@ +/** agricultural_sci hessian module — tsb analytics library. */ +export interface AgriculturalSciHessianOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciHessianResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciHessian(data: number[], opts: AgriculturalSciHessianOptions = {}): AgriculturalSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciHessian }; diff --git a/src/agricultural_sci/hypothesis.ts b/src/agricultural_sci/hypothesis.ts new file mode 100644 index 000000000..2aece3861 --- /dev/null +++ b/src/agricultural_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** agricultural_sci hypothesis module — tsb analytics library. */ +export interface AgriculturalSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciHypothesisResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciHypothesis(data: number[], opts: AgriculturalSciHypothesisOptions = {}): AgriculturalSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciHypothesis }; diff --git a/src/agricultural_sci/inference.ts b/src/agricultural_sci/inference.ts new file mode 100644 index 000000000..5761c9137 --- /dev/null +++ b/src/agricultural_sci/inference.ts @@ -0,0 +1,14 @@ +/** agricultural_sci inference module — tsb analytics library. */ +export interface AgriculturalSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciInferenceResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciInference(data: number[], opts: AgriculturalSciInferenceOptions = {}): AgriculturalSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciInference }; diff --git a/src/agricultural_sci/inference2.ts b/src/agricultural_sci/inference2.ts new file mode 100644 index 000000000..384d1a6c6 --- /dev/null +++ b/src/agricultural_sci/inference2.ts @@ -0,0 +1,14 @@ +/** agricultural_sci inference2 module — tsb analytics library. */ +export interface AgriculturalSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciInferenceResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciInference(data: number[], opts: AgriculturalSciInferenceOptions = {}): AgriculturalSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciInference }; diff --git a/src/agricultural_sci/integral.ts b/src/agricultural_sci/integral.ts new file mode 100644 index 000000000..862acf43d --- /dev/null +++ b/src/agricultural_sci/integral.ts @@ -0,0 +1,14 @@ +/** agricultural_sci integral module — tsb analytics library. */ +export interface AgriculturalSciIntegralOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciIntegralResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciIntegral(data: number[], opts: AgriculturalSciIntegralOptions = {}): AgriculturalSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciIntegral }; diff --git a/src/agricultural_sci/integration.ts b/src/agricultural_sci/integration.ts new file mode 100644 index 000000000..5e6cd3488 --- /dev/null +++ b/src/agricultural_sci/integration.ts @@ -0,0 +1,14 @@ +/** agricultural_sci integration module — tsb analytics library. */ +export interface AgriculturalSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciIntegrationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciIntegration(data: number[], opts: AgriculturalSciIntegrationOptions = {}): AgriculturalSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciIntegration }; diff --git a/src/agricultural_sci/interpolation.ts b/src/agricultural_sci/interpolation.ts new file mode 100644 index 000000000..4402fe54d --- /dev/null +++ b/src/agricultural_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci interpolation module — tsb analytics library. */ +export interface AgriculturalSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciInterpolationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciInterpolation(data: number[], opts: AgriculturalSciInterpolationOptions = {}): AgriculturalSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciInterpolation }; diff --git a/src/agricultural_sci/jacobian.ts b/src/agricultural_sci/jacobian.ts new file mode 100644 index 000000000..511f665d7 --- /dev/null +++ b/src/agricultural_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** agricultural_sci jacobian module — tsb analytics library. */ +export interface AgriculturalSciJacobianOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciJacobianResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciJacobian(data: number[], opts: AgriculturalSciJacobianOptions = {}): AgriculturalSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciJacobian }; diff --git a/src/agricultural_sci/kernel.ts b/src/agricultural_sci/kernel.ts new file mode 100644 index 000000000..fab3575fb --- /dev/null +++ b/src/agricultural_sci/kernel.ts @@ -0,0 +1,14 @@ +/** agricultural_sci kernel module — tsb analytics library. */ +export interface AgriculturalSciKernelOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciKernelResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciKernel(data: number[], opts: AgriculturalSciKernelOptions = {}): AgriculturalSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciKernel }; diff --git a/src/agricultural_sci/laplacian.ts b/src/agricultural_sci/laplacian.ts new file mode 100644 index 000000000..6fdd11d24 --- /dev/null +++ b/src/agricultural_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** agricultural_sci laplacian module — tsb analytics library. */ +export interface AgriculturalSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciLaplacianResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciLaplacian(data: number[], opts: AgriculturalSciLaplacianOptions = {}): AgriculturalSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciLaplacian }; diff --git a/src/agricultural_sci/learning.ts b/src/agricultural_sci/learning.ts new file mode 100644 index 000000000..4a5b21cca --- /dev/null +++ b/src/agricultural_sci/learning.ts @@ -0,0 +1,14 @@ +/** agricultural_sci learning module — tsb analytics library. */ +export interface AgriculturalSciLearningOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciLearningResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciLearning(data: number[], opts: AgriculturalSciLearningOptions = {}): AgriculturalSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciLearning }; diff --git a/src/agricultural_sci/linear.ts b/src/agricultural_sci/linear.ts new file mode 100644 index 000000000..b9f041f47 --- /dev/null +++ b/src/agricultural_sci/linear.ts @@ -0,0 +1,14 @@ +/** agricultural_sci linear module — tsb analytics library. */ +export interface AgriculturalSciLinearOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciLinearResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciLinear(data: number[], opts: AgriculturalSciLinearOptions = {}): AgriculturalSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciLinear }; diff --git a/src/agricultural_sci/manifold.ts b/src/agricultural_sci/manifold.ts new file mode 100644 index 000000000..48a1c0880 --- /dev/null +++ b/src/agricultural_sci/manifold.ts @@ -0,0 +1,14 @@ +/** agricultural_sci manifold module — tsb analytics library. */ +export interface AgriculturalSciManifoldOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciManifoldResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciManifold(data: number[], opts: AgriculturalSciManifoldOptions = {}): AgriculturalSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciManifold }; diff --git a/src/agricultural_sci/matching.ts b/src/agricultural_sci/matching.ts new file mode 100644 index 000000000..4ef05362f --- /dev/null +++ b/src/agricultural_sci/matching.ts @@ -0,0 +1,14 @@ +/** agricultural_sci matching module — tsb analytics library. */ +export interface AgriculturalSciMatchingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciMatchingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciMatching(data: number[], opts: AgriculturalSciMatchingOptions = {}): AgriculturalSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciMatching }; diff --git a/src/agricultural_sci/measurement.ts b/src/agricultural_sci/measurement.ts new file mode 100644 index 000000000..08f62f69d --- /dev/null +++ b/src/agricultural_sci/measurement.ts @@ -0,0 +1,14 @@ +/** agricultural_sci measurement module — tsb analytics library. */ +export interface AgriculturalSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciMeasurementResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciMeasurement(data: number[], opts: AgriculturalSciMeasurementOptions = {}): AgriculturalSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciMeasurement }; diff --git a/src/agricultural_sci/metrics.ts b/src/agricultural_sci/metrics.ts new file mode 100644 index 000000000..d6d5e9aa7 --- /dev/null +++ b/src/agricultural_sci/metrics.ts @@ -0,0 +1,14 @@ +/** agricultural_sci metrics module — tsb analytics library. */ +export interface AgriculturalSciMetricsOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciMetricsResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciMetrics(data: number[], opts: AgriculturalSciMetricsOptions = {}): AgriculturalSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciMetrics }; diff --git a/src/agricultural_sci/modeling.ts b/src/agricultural_sci/modeling.ts new file mode 100644 index 000000000..5b1a0776c --- /dev/null +++ b/src/agricultural_sci/modeling.ts @@ -0,0 +1,14 @@ +/** agricultural_sci modeling module — tsb analytics library. */ +export interface AgriculturalSciModelingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciModelingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciModeling(data: number[], opts: AgriculturalSciModelingOptions = {}): AgriculturalSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciModeling }; diff --git a/src/agricultural_sci/monitoring.ts b/src/agricultural_sci/monitoring.ts new file mode 100644 index 000000000..a7574e812 --- /dev/null +++ b/src/agricultural_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** agricultural_sci monitoring module — tsb analytics library. */ +export interface AgriculturalSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciMonitoringResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciMonitoring(data: number[], opts: AgriculturalSciMonitoringOptions = {}): AgriculturalSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciMonitoring }; diff --git a/src/agricultural_sci/nonlinear.ts b/src/agricultural_sci/nonlinear.ts new file mode 100644 index 000000000..c8a7349cc --- /dev/null +++ b/src/agricultural_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** agricultural_sci nonlinear module — tsb analytics library. */ +export interface AgriculturalSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciNonlinearResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciNonlinear(data: number[], opts: AgriculturalSciNonlinearOptions = {}): AgriculturalSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciNonlinear }; diff --git a/src/agricultural_sci/normalization.ts b/src/agricultural_sci/normalization.ts new file mode 100644 index 000000000..04c8a602d --- /dev/null +++ b/src/agricultural_sci/normalization.ts @@ -0,0 +1,14 @@ +/** agricultural_sci normalization module — tsb analytics library. */ +export interface AgriculturalSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciNormalizationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciNormalization(data: number[], opts: AgriculturalSciNormalizationOptions = {}): AgriculturalSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciNormalization }; diff --git a/src/agricultural_sci/optimization.ts b/src/agricultural_sci/optimization.ts new file mode 100644 index 000000000..28e0a8537 --- /dev/null +++ b/src/agricultural_sci/optimization.ts @@ -0,0 +1,14 @@ +/** agricultural_sci optimization module — tsb analytics library. */ +export interface AgriculturalSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciOptimizationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciOptimization(data: number[], opts: AgriculturalSciOptimizationOptions = {}): AgriculturalSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciOptimization }; diff --git a/src/agricultural_sci/patterns.ts b/src/agricultural_sci/patterns.ts new file mode 100644 index 000000000..4beacb0f2 --- /dev/null +++ b/src/agricultural_sci/patterns.ts @@ -0,0 +1,14 @@ +/** agricultural_sci patterns module — tsb analytics library. */ +export interface AgriculturalSciPatternsOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciPatternsResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciPatterns(data: number[], opts: AgriculturalSciPatternsOptions = {}): AgriculturalSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciPatterns }; diff --git a/src/agricultural_sci/permutation.ts b/src/agricultural_sci/permutation.ts new file mode 100644 index 000000000..2257f9046 --- /dev/null +++ b/src/agricultural_sci/permutation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci permutation module — tsb analytics library. */ +export interface AgriculturalSciPermutationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciPermutationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciPermutation(data: number[], opts: AgriculturalSciPermutationOptions = {}): AgriculturalSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciPermutation }; diff --git a/src/agricultural_sci/prediction.ts b/src/agricultural_sci/prediction.ts new file mode 100644 index 000000000..70c0372ba --- /dev/null +++ b/src/agricultural_sci/prediction.ts @@ -0,0 +1,14 @@ +/** agricultural_sci prediction module — tsb analytics library. */ +export interface AgriculturalSciPredictionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciPredictionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciPrediction(data: number[], opts: AgriculturalSciPredictionOptions = {}): AgriculturalSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciPrediction }; diff --git a/src/agricultural_sci/processing.ts b/src/agricultural_sci/processing.ts new file mode 100644 index 000000000..fd1336e07 --- /dev/null +++ b/src/agricultural_sci/processing.ts @@ -0,0 +1,14 @@ +/** agricultural_sci processing module — tsb analytics library. */ +export interface AgriculturalSciProcessingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciProcessingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciProcessing(data: number[], opts: AgriculturalSciProcessingOptions = {}): AgriculturalSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciProcessing }; diff --git a/src/agricultural_sci/profiling.ts b/src/agricultural_sci/profiling.ts new file mode 100644 index 000000000..3dcc3a873 --- /dev/null +++ b/src/agricultural_sci/profiling.ts @@ -0,0 +1,14 @@ +/** agricultural_sci profiling module — tsb analytics library. */ +export interface AgriculturalSciProfilingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciProfilingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciProfiling(data: number[], opts: AgriculturalSciProfilingOptions = {}): AgriculturalSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciProfiling }; diff --git a/src/agricultural_sci/projection.ts b/src/agricultural_sci/projection.ts new file mode 100644 index 000000000..7eea5add0 --- /dev/null +++ b/src/agricultural_sci/projection.ts @@ -0,0 +1,14 @@ +/** agricultural_sci projection module — tsb analytics library. */ +export interface AgriculturalSciProjectionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciProjectionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciProjection(data: number[], opts: AgriculturalSciProjectionOptions = {}): AgriculturalSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciProjection }; diff --git a/src/agricultural_sci/ranking.ts b/src/agricultural_sci/ranking.ts new file mode 100644 index 000000000..02c02c789 --- /dev/null +++ b/src/agricultural_sci/ranking.ts @@ -0,0 +1,14 @@ +/** agricultural_sci ranking module — tsb analytics library. */ +export interface AgriculturalSciRankingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciRankingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciRanking(data: number[], opts: AgriculturalSciRankingOptions = {}): AgriculturalSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciRanking }; diff --git a/src/agricultural_sci/reconstruction.ts b/src/agricultural_sci/reconstruction.ts new file mode 100644 index 000000000..8054c579b --- /dev/null +++ b/src/agricultural_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** agricultural_sci reconstruction module — tsb analytics library. */ +export interface AgriculturalSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciReconstructionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciReconstruction(data: number[], opts: AgriculturalSciReconstructionOptions = {}): AgriculturalSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciReconstruction }; diff --git a/src/agricultural_sci/registration.ts b/src/agricultural_sci/registration.ts new file mode 100644 index 000000000..3a7c9600d --- /dev/null +++ b/src/agricultural_sci/registration.ts @@ -0,0 +1,14 @@ +/** agricultural_sci registration module — tsb analytics library. */ +export interface AgriculturalSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciRegistrationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciRegistration(data: number[], opts: AgriculturalSciRegistrationOptions = {}): AgriculturalSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciRegistration }; diff --git a/src/agricultural_sci/regression.ts b/src/agricultural_sci/regression.ts new file mode 100644 index 000000000..abbd45821 --- /dev/null +++ b/src/agricultural_sci/regression.ts @@ -0,0 +1,14 @@ +/** agricultural_sci regression module — tsb analytics library. */ +export interface AgriculturalSciRegressionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciRegressionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciRegression(data: number[], opts: AgriculturalSciRegressionOptions = {}): AgriculturalSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciRegression }; diff --git a/src/agricultural_sci/regularization.ts b/src/agricultural_sci/regularization.ts new file mode 100644 index 000000000..db93009ca --- /dev/null +++ b/src/agricultural_sci/regularization.ts @@ -0,0 +1,14 @@ +/** agricultural_sci regularization module — tsb analytics library. */ +export interface AgriculturalSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciRegularizationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciRegularization(data: number[], opts: AgriculturalSciRegularizationOptions = {}): AgriculturalSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciRegularization }; diff --git a/src/agricultural_sci/robustness.ts b/src/agricultural_sci/robustness.ts new file mode 100644 index 000000000..19d5cf43b --- /dev/null +++ b/src/agricultural_sci/robustness.ts @@ -0,0 +1,14 @@ +/** agricultural_sci robustness module — tsb analytics library. */ +export interface AgriculturalSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciRobustnessResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciRobustness(data: number[], opts: AgriculturalSciRobustnessOptions = {}): AgriculturalSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciRobustness }; diff --git a/src/agricultural_sci/sampling.ts b/src/agricultural_sci/sampling.ts new file mode 100644 index 000000000..e75d8ca83 --- /dev/null +++ b/src/agricultural_sci/sampling.ts @@ -0,0 +1,14 @@ +/** agricultural_sci sampling module — tsb analytics library. */ +export interface AgriculturalSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSamplingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSampling(data: number[], opts: AgriculturalSciSamplingOptions = {}): AgriculturalSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSampling }; diff --git a/src/agricultural_sci/sampling2.ts b/src/agricultural_sci/sampling2.ts new file mode 100644 index 000000000..657f4497e --- /dev/null +++ b/src/agricultural_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** agricultural_sci sampling2 module — tsb analytics library. */ +export interface AgriculturalSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSamplingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSampling(data: number[], opts: AgriculturalSciSamplingOptions = {}): AgriculturalSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSampling }; diff --git a/src/agricultural_sci/scaling.ts b/src/agricultural_sci/scaling.ts new file mode 100644 index 000000000..3ab21c879 --- /dev/null +++ b/src/agricultural_sci/scaling.ts @@ -0,0 +1,14 @@ +/** agricultural_sci scaling module — tsb analytics library. */ +export interface AgriculturalSciScalingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciScalingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciScaling(data: number[], opts: AgriculturalSciScalingOptions = {}): AgriculturalSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciScaling }; diff --git a/src/agricultural_sci/scoring.ts b/src/agricultural_sci/scoring.ts new file mode 100644 index 000000000..3e717d3fa --- /dev/null +++ b/src/agricultural_sci/scoring.ts @@ -0,0 +1,14 @@ +/** agricultural_sci scoring module — tsb analytics library. */ +export interface AgriculturalSciScoringOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciScoringResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciScoring(data: number[], opts: AgriculturalSciScoringOptions = {}): AgriculturalSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciScoring }; diff --git a/src/agricultural_sci/segmentation.ts b/src/agricultural_sci/segmentation.ts new file mode 100644 index 000000000..dcbd9b2e7 --- /dev/null +++ b/src/agricultural_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci segmentation module — tsb analytics library. */ +export interface AgriculturalSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSegmentationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSegmentation(data: number[], opts: AgriculturalSciSegmentationOptions = {}): AgriculturalSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSegmentation }; diff --git a/src/agricultural_sci/selection.ts b/src/agricultural_sci/selection.ts new file mode 100644 index 000000000..8f8e5698f --- /dev/null +++ b/src/agricultural_sci/selection.ts @@ -0,0 +1,14 @@ +/** agricultural_sci selection module — tsb analytics library. */ +export interface AgriculturalSciSelectionOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSelectionResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSelection(data: number[], opts: AgriculturalSciSelectionOptions = {}): AgriculturalSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSelection }; diff --git a/src/agricultural_sci/sensitivity.ts b/src/agricultural_sci/sensitivity.ts new file mode 100644 index 000000000..baa1f50d5 --- /dev/null +++ b/src/agricultural_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** agricultural_sci sensitivity module — tsb analytics library. */ +export interface AgriculturalSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSensitivityResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSensitivity(data: number[], opts: AgriculturalSciSensitivityOptions = {}): AgriculturalSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSensitivity }; diff --git a/src/agricultural_sci/simulation.ts b/src/agricultural_sci/simulation.ts new file mode 100644 index 000000000..f45ee06bb --- /dev/null +++ b/src/agricultural_sci/simulation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci simulation module — tsb analytics library. */ +export interface AgriculturalSciSimulationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSimulationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSimulation(data: number[], opts: AgriculturalSciSimulationOptions = {}): AgriculturalSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSimulation }; diff --git a/src/agricultural_sci/smoothing.ts b/src/agricultural_sci/smoothing.ts new file mode 100644 index 000000000..232213c48 --- /dev/null +++ b/src/agricultural_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** agricultural_sci smoothing module — tsb analytics library. */ +export interface AgriculturalSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSmoothingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSmoothing(data: number[], opts: AgriculturalSciSmoothingOptions = {}): AgriculturalSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSmoothing }; diff --git a/src/agricultural_sci/stability.ts b/src/agricultural_sci/stability.ts new file mode 100644 index 000000000..7dc5ee8e9 --- /dev/null +++ b/src/agricultural_sci/stability.ts @@ -0,0 +1,14 @@ +/** agricultural_sci stability module — tsb analytics library. */ +export interface AgriculturalSciStabilityOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciStabilityResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciStability(data: number[], opts: AgriculturalSciStabilityOptions = {}): AgriculturalSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciStability }; diff --git a/src/agricultural_sci/stacking.ts b/src/agricultural_sci/stacking.ts new file mode 100644 index 000000000..b2afb1521 --- /dev/null +++ b/src/agricultural_sci/stacking.ts @@ -0,0 +1,14 @@ +/** agricultural_sci stacking module — tsb analytics library. */ +export interface AgriculturalSciStackingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciStackingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciStacking(data: number[], opts: AgriculturalSciStackingOptions = {}): AgriculturalSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciStacking }; diff --git a/src/agricultural_sci/standardization.ts b/src/agricultural_sci/standardization.ts new file mode 100644 index 000000000..93e819c79 --- /dev/null +++ b/src/agricultural_sci/standardization.ts @@ -0,0 +1,14 @@ +/** agricultural_sci standardization module — tsb analytics library. */ +export interface AgriculturalSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciStandardizationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciStandardization(data: number[], opts: AgriculturalSciStandardizationOptions = {}): AgriculturalSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciStandardization }; diff --git a/src/agricultural_sci/static.ts b/src/agricultural_sci/static.ts new file mode 100644 index 000000000..32a51d9f8 --- /dev/null +++ b/src/agricultural_sci/static.ts @@ -0,0 +1,14 @@ +/** agricultural_sci static module — tsb analytics library. */ +export interface AgriculturalSciStaticOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciStaticResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciStatic(data: number[], opts: AgriculturalSciStaticOptions = {}): AgriculturalSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciStatic }; diff --git a/src/agricultural_sci/stochastic.ts b/src/agricultural_sci/stochastic.ts new file mode 100644 index 000000000..24c851366 --- /dev/null +++ b/src/agricultural_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** agricultural_sci stochastic module — tsb analytics library. */ +export interface AgriculturalSciStochasticOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciStochasticResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciStochastic(data: number[], opts: AgriculturalSciStochasticOptions = {}): AgriculturalSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciStochastic }; diff --git a/src/agricultural_sci/synthesis.ts b/src/agricultural_sci/synthesis.ts new file mode 100644 index 000000000..c713016c1 --- /dev/null +++ b/src/agricultural_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** agricultural_sci synthesis module — tsb analytics library. */ +export interface AgriculturalSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciSynthesisResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciSynthesis(data: number[], opts: AgriculturalSciSynthesisOptions = {}): AgriculturalSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciSynthesis }; diff --git a/src/agricultural_sci/topology.ts b/src/agricultural_sci/topology.ts new file mode 100644 index 000000000..1827852c4 --- /dev/null +++ b/src/agricultural_sci/topology.ts @@ -0,0 +1,14 @@ +/** agricultural_sci topology module — tsb analytics library. */ +export interface AgriculturalSciTopologyOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciTopologyResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciTopology(data: number[], opts: AgriculturalSciTopologyOptions = {}): AgriculturalSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciTopology }; diff --git a/src/agricultural_sci/tracking.ts b/src/agricultural_sci/tracking.ts new file mode 100644 index 000000000..dba19e3db --- /dev/null +++ b/src/agricultural_sci/tracking.ts @@ -0,0 +1,14 @@ +/** agricultural_sci tracking module — tsb analytics library. */ +export interface AgriculturalSciTrackingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciTrackingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciTracking(data: number[], opts: AgriculturalSciTrackingOptions = {}): AgriculturalSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciTracking }; diff --git a/src/agricultural_sci/transform.ts b/src/agricultural_sci/transform.ts new file mode 100644 index 000000000..0b59c0ecb --- /dev/null +++ b/src/agricultural_sci/transform.ts @@ -0,0 +1,14 @@ +/** agricultural_sci transform module — tsb analytics library. */ +export interface AgriculturalSciTransformOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciTransformResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciTransform(data: number[], opts: AgriculturalSciTransformOptions = {}): AgriculturalSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciTransform }; diff --git a/src/agricultural_sci/uncertainty.ts b/src/agricultural_sci/uncertainty.ts new file mode 100644 index 000000000..45db32806 --- /dev/null +++ b/src/agricultural_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** agricultural_sci uncertainty module — tsb analytics library. */ +export interface AgriculturalSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciUncertainty(data: number[], opts: AgriculturalSciUncertaintyOptions = {}): AgriculturalSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciUncertainty }; diff --git a/src/agricultural_sci/validation.ts b/src/agricultural_sci/validation.ts new file mode 100644 index 000000000..83da38b0b --- /dev/null +++ b/src/agricultural_sci/validation.ts @@ -0,0 +1,14 @@ +/** agricultural_sci validation module — tsb analytics library. */ +export interface AgriculturalSciValidationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciValidationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciValidation(data: number[], opts: AgriculturalSciValidationOptions = {}): AgriculturalSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciValidation }; diff --git a/src/agricultural_sci/verification.ts b/src/agricultural_sci/verification.ts new file mode 100644 index 000000000..f3beceaa1 --- /dev/null +++ b/src/agricultural_sci/verification.ts @@ -0,0 +1,14 @@ +/** agricultural_sci verification module — tsb analytics library. */ +export interface AgriculturalSciVerificationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciVerificationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciVerification(data: number[], opts: AgriculturalSciVerificationOptions = {}): AgriculturalSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciVerification }; diff --git a/src/agricultural_sci/visualization.ts b/src/agricultural_sci/visualization.ts new file mode 100644 index 000000000..50f63d4fe --- /dev/null +++ b/src/agricultural_sci/visualization.ts @@ -0,0 +1,14 @@ +/** agricultural_sci visualization module — tsb analytics library. */ +export interface AgriculturalSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciVisualizationResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciVisualization(data: number[], opts: AgriculturalSciVisualizationOptions = {}): AgriculturalSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciVisualization }; diff --git a/src/agricultural_sci/voting.ts b/src/agricultural_sci/voting.ts new file mode 100644 index 000000000..0b1ed6b13 --- /dev/null +++ b/src/agricultural_sci/voting.ts @@ -0,0 +1,14 @@ +/** agricultural_sci voting module — tsb analytics library. */ +export interface AgriculturalSciVotingOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciVotingResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciVoting(data: number[], opts: AgriculturalSciVotingOptions = {}): AgriculturalSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciVoting }; diff --git a/src/agricultural_sci/wavelet.ts b/src/agricultural_sci/wavelet.ts new file mode 100644 index 000000000..058a169d8 --- /dev/null +++ b/src/agricultural_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** agricultural_sci wavelet module — tsb analytics library. */ +export interface AgriculturalSciWaveletOptions { tol?: number; maxIter?: number; } +export interface AgriculturalSciWaveletResult { values: number[]; converged: boolean; } +export function computeAgriculturalSciWavelet(data: number[], opts: AgriculturalSciWaveletOptions = {}): AgriculturalSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAgriculturalSciWavelet }; diff --git a/src/analytics/ab_testing.ts b/src/analytics/ab_testing.ts new file mode 100644 index 000000000..f998cfe8a --- /dev/null +++ b/src/analytics/ab_testing.ts @@ -0,0 +1,22 @@ +/** Ab Testing module — tsb analytics library. */ + +/** Options for Ab Testing. */ +export interface AbTestingOptions { tol?: number; maxIter?: number; } + +/** Result from Ab Testing. */ +export interface AbTestingResult { values: number[]; converged: boolean; } + +/** Compute Ab Testing. */ +export function computeAbTesting(data: number[], opts: AbTestingOptions = {}): AbTestingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAbTesting }; diff --git a/src/analytics/acquisition.ts b/src/analytics/acquisition.ts new file mode 100644 index 000000000..8b921d071 --- /dev/null +++ b/src/analytics/acquisition.ts @@ -0,0 +1,22 @@ +/** Acquisition module — tsb analytics library. */ + +/** Options for Acquisition. */ +export interface AcquisitionOptions { tol?: number; maxIter?: number; } + +/** Result from Acquisition. */ +export interface AcquisitionResult { values: number[]; converged: boolean; } + +/** Compute Acquisition. */ +export function computeAcquisition(data: number[], opts: AcquisitionOptions = {}): AcquisitionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAcquisition }; diff --git a/src/analytics/activation.ts b/src/analytics/activation.ts new file mode 100644 index 000000000..d34b74792 --- /dev/null +++ b/src/analytics/activation.ts @@ -0,0 +1,22 @@ +/** Activation module — tsb analytics library. */ + +/** Options for Activation. */ +export interface ActivationOptions { tol?: number; maxIter?: number; } + +/** Result from Activation. */ +export interface ActivationResult { values: number[]; converged: boolean; } + +/** Compute Activation. */ +export function computeActivation(data: number[], opts: ActivationOptions = {}): ActivationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeActivation }; diff --git a/src/analytics/advanced.ts b/src/analytics/advanced.ts new file mode 100644 index 000000000..5659cd89d --- /dev/null +++ b/src/analytics/advanced.ts @@ -0,0 +1,15 @@ +/** Analytics Advanced module — tsb analytics library. */ +export interface Analytics advancedOptions { tol?: number; maxIter?: number; } +export interface Analytics advancedResult { values: number[]; converged: boolean; } +export function computeAnalytics advanced(data: number[], opts: Analytics advancedOptions = {}): Analytics advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics advanced }; diff --git a/src/analytics/anomaly.ts b/src/analytics/anomaly.ts new file mode 100644 index 000000000..a1e730a58 --- /dev/null +++ b/src/analytics/anomaly.ts @@ -0,0 +1,22 @@ +/** Anomaly module — tsb analytics library. */ + +/** Options for Anomaly. */ +export interface AnomalyOptions { tol?: number; maxIter?: number; } + +/** Result from Anomaly. */ +export interface AnomalyResult { values: number[]; converged: boolean; } + +/** Compute Anomaly. */ +export function computeAnomaly(data: number[], opts: AnomalyOptions = {}): AnomalyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAnomaly }; diff --git a/src/analytics/attribution.ts b/src/analytics/attribution.ts new file mode 100644 index 000000000..6a397df16 --- /dev/null +++ b/src/analytics/attribution.ts @@ -0,0 +1,22 @@ +/** Attribution module — tsb analytics library. */ + +/** Options for Attribution. */ +export interface AttributionOptions { tol?: number; maxIter?: number; } + +/** Result from Attribution. */ +export interface AttributionResult { values: number[]; converged: boolean; } + +/** Compute Attribution. */ +export function computeAttribution(data: number[], opts: AttributionOptions = {}): AttributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAttribution }; diff --git a/src/analytics/base2.ts b/src/analytics/base2.ts new file mode 100644 index 000000000..aee69feef --- /dev/null +++ b/src/analytics/base2.ts @@ -0,0 +1,15 @@ +/** Analytics Base2 module — tsb analytics library. */ +export interface Analytics base2Options { tol?: number; maxIter?: number; } +export interface Analytics base2Result { values: number[]; converged: boolean; } +export function computeAnalytics base2(data: number[], opts: Analytics base2Options = {}): Analytics base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics base2 }; diff --git a/src/analytics/batch.ts b/src/analytics/batch.ts new file mode 100644 index 000000000..6c798d0a0 --- /dev/null +++ b/src/analytics/batch.ts @@ -0,0 +1,15 @@ +/** Analytics Batch module — tsb analytics library. */ +export interface Analytics batchOptions { tol?: number; maxIter?: number; } +export interface Analytics batchResult { values: number[]; converged: boolean; } +export function computeAnalytics batch(data: number[], opts: Analytics batchOptions = {}): Analytics batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics batch }; diff --git a/src/analytics/beta.ts b/src/analytics/beta.ts new file mode 100644 index 000000000..635224c92 --- /dev/null +++ b/src/analytics/beta.ts @@ -0,0 +1,15 @@ +/** Analytics Beta module — tsb analytics library. */ +export interface Analytics betaOptions { tol?: number; maxIter?: number; } +export interface Analytics betaResult { values: number[]; converged: boolean; } +export function computeAnalytics beta(data: number[], opts: Analytics betaOptions = {}): Analytics betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics beta }; diff --git a/src/analytics/canary.ts b/src/analytics/canary.ts new file mode 100644 index 000000000..38627a668 --- /dev/null +++ b/src/analytics/canary.ts @@ -0,0 +1,22 @@ +/** Canary module — tsb analytics library. */ + +/** Options for Canary. */ +export interface CanaryOptions { tol?: number; maxIter?: number; } + +/** Result from Canary. */ +export interface CanaryResult { values: number[]; converged: boolean; } + +/** Compute Canary. */ +export function computeCanary(data: number[], opts: CanaryOptions = {}): CanaryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCanary }; diff --git a/src/analytics/churn.ts b/src/analytics/churn.ts new file mode 100644 index 000000000..1a20fb09c --- /dev/null +++ b/src/analytics/churn.ts @@ -0,0 +1,22 @@ +/** Churn module — tsb analytics library. */ + +/** Options for Churn. */ +export interface ChurnOptions { tol?: number; maxIter?: number; } + +/** Result from Churn. */ +export interface ChurnResult { values: number[]; converged: boolean; } + +/** Compute Churn. */ +export function computeChurn(data: number[], opts: ChurnOptions = {}): ChurnResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeChurn }; diff --git a/src/analytics/clustering.ts b/src/analytics/clustering.ts new file mode 100644 index 000000000..76db9a775 --- /dev/null +++ b/src/analytics/clustering.ts @@ -0,0 +1,22 @@ +/** Clustering module — tsb analytics library. */ + +/** Options for Clustering. */ +export interface ClusteringOptions { tol?: number; maxIter?: number; } + +/** Result from Clustering. */ +export interface ClusteringResult { values: number[]; converged: boolean; } + +/** Compute Clustering. */ +export function computeClustering(data: number[], opts: ClusteringOptions = {}): ClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeClustering }; diff --git a/src/analytics/cohort.ts b/src/analytics/cohort.ts new file mode 100644 index 000000000..ffdec21d5 --- /dev/null +++ b/src/analytics/cohort.ts @@ -0,0 +1,22 @@ +/** Cohort module — tsb analytics library. */ + +/** Options for Cohort. */ +export interface CohortOptions { tol?: number; maxIter?: number; } + +/** Result from Cohort. */ +export interface CohortResult { values: number[]; converged: boolean; } + +/** Compute Cohort. */ +export function computeCohort(data: number[], opts: CohortOptions = {}): CohortResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCohort }; diff --git a/src/analytics/conversion.ts b/src/analytics/conversion.ts new file mode 100644 index 000000000..19a565775 --- /dev/null +++ b/src/analytics/conversion.ts @@ -0,0 +1,22 @@ +/** Conversion module — tsb analytics library. */ + +/** Options for Conversion. */ +export interface ConversionOptions { tol?: number; maxIter?: number; } + +/** Result from Conversion. */ +export interface ConversionResult { values: number[]; converged: boolean; } + +/** Compute Conversion. */ +export function computeConversion(data: number[], opts: ConversionOptions = {}): ConversionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeConversion }; diff --git a/src/analytics/cpu.ts b/src/analytics/cpu.ts new file mode 100644 index 000000000..bdd0a4bc4 --- /dev/null +++ b/src/analytics/cpu.ts @@ -0,0 +1,15 @@ +/** Analytics Cpu module — tsb analytics library. */ +export interface Analytics cpuOptions { tol?: number; maxIter?: number; } +export interface Analytics cpuResult { values: number[]; converged: boolean; } +export function computeAnalytics cpu(data: number[], opts: Analytics cpuOptions = {}): Analytics cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics cpu }; diff --git a/src/analytics/dense.ts b/src/analytics/dense.ts new file mode 100644 index 000000000..a185c66a6 --- /dev/null +++ b/src/analytics/dense.ts @@ -0,0 +1,15 @@ +/** Analytics Dense module — tsb analytics library. */ +export interface Analytics denseOptions { tol?: number; maxIter?: number; } +export interface Analytics denseResult { values: number[]; converged: boolean; } +export function computeAnalytics dense(data: number[], opts: Analytics denseOptions = {}): Analytics denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics dense }; diff --git a/src/analytics/descriptive.ts b/src/analytics/descriptive.ts new file mode 100644 index 000000000..9988dbe78 --- /dev/null +++ b/src/analytics/descriptive.ts @@ -0,0 +1,22 @@ +/** Descriptive module — tsb analytics library. */ + +/** Options for Descriptive. */ +export interface DescriptiveOptions { tol?: number; maxIter?: number; } + +/** Result from Descriptive. */ +export interface DescriptiveResult { values: number[]; converged: boolean; } + +/** Compute Descriptive. */ +export function computeDescriptive(data: number[], opts: DescriptiveOptions = {}): DescriptiveResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDescriptive }; diff --git a/src/analytics/diagnostic.ts b/src/analytics/diagnostic.ts new file mode 100644 index 000000000..b92ee112e --- /dev/null +++ b/src/analytics/diagnostic.ts @@ -0,0 +1,22 @@ +/** Diagnostic module — tsb analytics library. */ + +/** Options for Diagnostic. */ +export interface DiagnosticOptions { tol?: number; maxIter?: number; } + +/** Result from Diagnostic. */ +export interface DiagnosticResult { values: number[]; converged: boolean; } + +/** Compute Diagnostic. */ +export function computeDiagnostic(data: number[], opts: DiagnosticOptions = {}): DiagnosticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDiagnostic }; diff --git a/src/analytics/distributed.ts b/src/analytics/distributed.ts new file mode 100644 index 000000000..33203c442 --- /dev/null +++ b/src/analytics/distributed.ts @@ -0,0 +1,15 @@ +/** Analytics Distributed module — tsb analytics library. */ +export interface Analytics distributedOptions { tol?: number; maxIter?: number; } +export interface Analytics distributedResult { values: number[]; converged: boolean; } +export function computeAnalytics distributed(data: number[], opts: Analytics distributedOptions = {}): Analytics distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics distributed }; diff --git a/src/analytics/engagement.ts b/src/analytics/engagement.ts new file mode 100644 index 000000000..6b0f93abd --- /dev/null +++ b/src/analytics/engagement.ts @@ -0,0 +1,22 @@ +/** Engagement module — tsb analytics library. */ + +/** Options for Engagement. */ +export interface EngagementOptions { tol?: number; maxIter?: number; } + +/** Result from Engagement. */ +export interface EngagementResult { values: number[]; converged: boolean; } + +/** Compute Engagement. */ +export function computeEngagement(data: number[], opts: EngagementOptions = {}): EngagementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEngagement }; diff --git a/src/analytics/experiment.ts b/src/analytics/experiment.ts new file mode 100644 index 000000000..a243a35b8 --- /dev/null +++ b/src/analytics/experiment.ts @@ -0,0 +1,22 @@ +/** Experiment module — tsb analytics library. */ + +/** Options for Experiment. */ +export interface ExperimentOptions { tol?: number; maxIter?: number; } + +/** Result from Experiment. */ +export interface ExperimentResult { values: number[]; converged: boolean; } + +/** Compute Experiment. */ +export function computeExperiment(data: number[], opts: ExperimentOptions = {}): ExperimentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeExperiment }; diff --git a/src/analytics/experimental.ts b/src/analytics/experimental.ts new file mode 100644 index 000000000..b4c1fb604 --- /dev/null +++ b/src/analytics/experimental.ts @@ -0,0 +1,15 @@ +/** Analytics Experimental module — tsb analytics library. */ +export interface Analytics experimentalOptions { tol?: number; maxIter?: number; } +export interface Analytics experimentalResult { values: number[]; converged: boolean; } +export function computeAnalytics experimental(data: number[], opts: Analytics experimentalOptions = {}): Analytics experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics experimental }; diff --git a/src/analytics/fast.ts b/src/analytics/fast.ts new file mode 100644 index 000000000..2e1f39d31 --- /dev/null +++ b/src/analytics/fast.ts @@ -0,0 +1,15 @@ +/** Analytics Fast module — tsb analytics library. */ +export interface Analytics fastOptions { tol?: number; maxIter?: number; } +export interface Analytics fastResult { values: number[]; converged: boolean; } +export function computeAnalytics fast(data: number[], opts: Analytics fastOptions = {}): Analytics fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics fast }; diff --git a/src/analytics/feature_flag.ts b/src/analytics/feature_flag.ts new file mode 100644 index 000000000..b112e9656 --- /dev/null +++ b/src/analytics/feature_flag.ts @@ -0,0 +1,22 @@ +/** Feature Flag module — tsb analytics library. */ + +/** Options for Feature Flag. */ +export interface FeatureFlagOptions { tol?: number; maxIter?: number; } + +/** Result from Feature Flag. */ +export interface FeatureFlagResult { values: number[]; converged: boolean; } + +/** Compute Feature Flag. */ +export function computeFeatureFlag(data: number[], opts: FeatureFlagOptions = {}): FeatureFlagResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFeatureFlag }; diff --git a/src/analytics/funnel.ts b/src/analytics/funnel.ts new file mode 100644 index 000000000..449bb4e8d --- /dev/null +++ b/src/analytics/funnel.ts @@ -0,0 +1,22 @@ +/** Funnel module — tsb analytics library. */ + +/** Options for Funnel. */ +export interface FunnelOptions { tol?: number; maxIter?: number; } + +/** Result from Funnel. */ +export interface FunnelResult { values: number[]; converged: boolean; } + +/** Compute Funnel. */ +export function computeFunnel(data: number[], opts: FunnelOptions = {}): FunnelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFunnel }; diff --git a/src/analytics/future.ts b/src/analytics/future.ts new file mode 100644 index 000000000..031dcaef6 --- /dev/null +++ b/src/analytics/future.ts @@ -0,0 +1,15 @@ +/** Analytics Future module — tsb analytics library. */ +export interface Analytics futureOptions { tol?: number; maxIter?: number; } +export interface Analytics futureResult { values: number[]; converged: boolean; } +export function computeAnalytics future(data: number[], opts: Analytics futureOptions = {}): Analytics futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics future }; diff --git a/src/analytics/gpu.ts b/src/analytics/gpu.ts new file mode 100644 index 000000000..3442cad11 --- /dev/null +++ b/src/analytics/gpu.ts @@ -0,0 +1,15 @@ +/** Analytics Gpu module — tsb analytics library. */ +export interface Analytics gpuOptions { tol?: number; maxIter?: number; } +export interface Analytics gpuResult { values: number[]; converged: boolean; } +export function computeAnalytics gpu(data: number[], opts: Analytics gpuOptions = {}): Analytics gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics gpu }; diff --git a/src/analytics/growth.ts b/src/analytics/growth.ts new file mode 100644 index 000000000..95e007fc9 --- /dev/null +++ b/src/analytics/growth.ts @@ -0,0 +1,22 @@ +/** Growth module — tsb analytics library. */ + +/** Options for Growth. */ +export interface GrowthOptions { tol?: number; maxIter?: number; } + +/** Result from Growth. */ +export interface GrowthResult { values: number[]; converged: boolean; } + +/** Compute Growth. */ +export function computeGrowth(data: number[], opts: GrowthOptions = {}): GrowthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGrowth }; diff --git a/src/analytics/inferential.ts b/src/analytics/inferential.ts new file mode 100644 index 000000000..d327f8c79 --- /dev/null +++ b/src/analytics/inferential.ts @@ -0,0 +1,22 @@ +/** Inferential module — tsb analytics library. */ + +/** Options for Inferential. */ +export interface InferentialOptions { tol?: number; maxIter?: number; } + +/** Result from Inferential. */ +export interface InferentialResult { values: number[]; converged: boolean; } + +/** Compute Inferential. */ +export function computeInferential(data: number[], opts: InferentialOptions = {}): InferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeInferential }; diff --git a/src/analytics/large.ts b/src/analytics/large.ts new file mode 100644 index 000000000..1214ffd80 --- /dev/null +++ b/src/analytics/large.ts @@ -0,0 +1,15 @@ +/** Analytics Large module — tsb analytics library. */ +export interface Analytics largeOptions { tol?: number; maxIter?: number; } +export interface Analytics largeResult { values: number[]; converged: boolean; } +export function computeAnalytics large(data: number[], opts: Analytics largeOptions = {}): Analytics largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics large }; diff --git a/src/analytics/legacy.ts b/src/analytics/legacy.ts new file mode 100644 index 000000000..ecb1c3139 --- /dev/null +++ b/src/analytics/legacy.ts @@ -0,0 +1,15 @@ +/** Analytics Legacy module — tsb analytics library. */ +export interface Analytics legacyOptions { tol?: number; maxIter?: number; } +export interface Analytics legacyResult { values: number[]; converged: boolean; } +export function computeAnalytics legacy(data: number[], opts: Analytics legacyOptions = {}): Analytics legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics legacy }; diff --git a/src/analytics/lifetime.ts b/src/analytics/lifetime.ts new file mode 100644 index 000000000..1374dcb9b --- /dev/null +++ b/src/analytics/lifetime.ts @@ -0,0 +1,22 @@ +/** Lifetime module — tsb analytics library. */ + +/** Options for Lifetime. */ +export interface LifetimeOptions { tol?: number; maxIter?: number; } + +/** Result from Lifetime. */ +export interface LifetimeResult { values: number[]; converged: boolean; } + +/** Compute Lifetime. */ +export function computeLifetime(data: number[], opts: LifetimeOptions = {}): LifetimeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLifetime }; diff --git a/src/analytics/lite.ts b/src/analytics/lite.ts new file mode 100644 index 000000000..3de1863dd --- /dev/null +++ b/src/analytics/lite.ts @@ -0,0 +1,15 @@ +/** Analytics Lite module — tsb analytics library. */ +export interface Analytics liteOptions { tol?: number; maxIter?: number; } +export interface Analytics liteResult { values: number[]; converged: boolean; } +export function computeAnalytics lite(data: number[], opts: Analytics liteOptions = {}): Analytics liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics lite }; diff --git a/src/analytics/mini.ts b/src/analytics/mini.ts new file mode 100644 index 000000000..529edd539 --- /dev/null +++ b/src/analytics/mini.ts @@ -0,0 +1,15 @@ +/** Analytics Mini module — tsb analytics library. */ +export interface Analytics miniOptions { tol?: number; maxIter?: number; } +export interface Analytics miniResult { values: number[]; converged: boolean; } +export function computeAnalytics mini(data: number[], opts: Analytics miniOptions = {}): Analytics miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics mini }; diff --git a/src/analytics/monetization.ts b/src/analytics/monetization.ts new file mode 100644 index 000000000..c1ec763a3 --- /dev/null +++ b/src/analytics/monetization.ts @@ -0,0 +1,22 @@ +/** Monetization module — tsb analytics library. */ + +/** Options for Monetization. */ +export interface MonetizationOptions { tol?: number; maxIter?: number; } + +/** Result from Monetization. */ +export interface MonetizationResult { values: number[]; converged: boolean; } + +/** Compute Monetization. */ +export function computeMonetization(data: number[], opts: MonetizationOptions = {}): MonetizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMonetization }; diff --git a/src/analytics/multivariate.ts b/src/analytics/multivariate.ts new file mode 100644 index 000000000..b94eee077 --- /dev/null +++ b/src/analytics/multivariate.ts @@ -0,0 +1,22 @@ +/** Multivariate module — tsb analytics library. */ + +/** Options for Multivariate. */ +export interface MultivariateOptions { tol?: number; maxIter?: number; } + +/** Result from Multivariate. */ +export interface MultivariateResult { values: number[]; converged: boolean; } + +/** Compute Multivariate. */ +export function computeMultivariate(data: number[], opts: MultivariateOptions = {}): MultivariateResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMultivariate }; diff --git a/src/analytics/next.ts b/src/analytics/next.ts new file mode 100644 index 000000000..0cf2d92f8 --- /dev/null +++ b/src/analytics/next.ts @@ -0,0 +1,15 @@ +/** Analytics Next module — tsb analytics library. */ +export interface Analytics nextOptions { tol?: number; maxIter?: number; } +export interface Analytics nextResult { values: number[]; converged: boolean; } +export function computeAnalytics next(data: number[], opts: Analytics nextOptions = {}): Analytics nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics next }; diff --git a/src/analytics/online.ts b/src/analytics/online.ts new file mode 100644 index 000000000..9ae674eee --- /dev/null +++ b/src/analytics/online.ts @@ -0,0 +1,15 @@ +/** Analytics Online module — tsb analytics library. */ +export interface Analytics onlineOptions { tol?: number; maxIter?: number; } +export interface Analytics onlineResult { values: number[]; converged: boolean; } +export function computeAnalytics online(data: number[], opts: Analytics onlineOptions = {}): Analytics onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics online }; diff --git a/src/analytics/parallel.ts b/src/analytics/parallel.ts new file mode 100644 index 000000000..3bb5d78ba --- /dev/null +++ b/src/analytics/parallel.ts @@ -0,0 +1,15 @@ +/** Analytics Parallel module — tsb analytics library. */ +export interface Analytics parallelOptions { tol?: number; maxIter?: number; } +export interface Analytics parallelResult { values: number[]; converged: boolean; } +export function computeAnalytics parallel(data: number[], opts: Analytics parallelOptions = {}): Analytics parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics parallel }; diff --git a/src/analytics/plus.ts b/src/analytics/plus.ts new file mode 100644 index 000000000..8be08fd9c --- /dev/null +++ b/src/analytics/plus.ts @@ -0,0 +1,15 @@ +/** Analytics Plus module — tsb analytics library. */ +export interface Analytics plusOptions { tol?: number; maxIter?: number; } +export interface Analytics plusResult { values: number[]; converged: boolean; } +export function computeAnalytics plus(data: number[], opts: Analytics plusOptions = {}): Analytics plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics plus }; diff --git a/src/analytics/predictive.ts b/src/analytics/predictive.ts new file mode 100644 index 000000000..4ecd4ccd7 --- /dev/null +++ b/src/analytics/predictive.ts @@ -0,0 +1,22 @@ +/** Predictive module — tsb analytics library. */ + +/** Options for Predictive. */ +export interface PredictiveOptions { tol?: number; maxIter?: number; } + +/** Result from Predictive. */ +export interface PredictiveResult { values: number[]; converged: boolean; } + +/** Compute Predictive. */ +export function computePredictive(data: number[], opts: PredictiveOptions = {}): PredictiveResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePredictive }; diff --git a/src/analytics/prescriptive.ts b/src/analytics/prescriptive.ts new file mode 100644 index 000000000..f1f398dce --- /dev/null +++ b/src/analytics/prescriptive.ts @@ -0,0 +1,22 @@ +/** Prescriptive module — tsb analytics library. */ + +/** Options for Prescriptive. */ +export interface PrescriptiveOptions { tol?: number; maxIter?: number; } + +/** Result from Prescriptive. */ +export interface PrescriptiveResult { values: number[]; converged: boolean; } + +/** Compute Prescriptive. */ +export function computePrescriptive(data: number[], opts: PrescriptiveOptions = {}): PrescriptiveResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePrescriptive }; diff --git a/src/analytics/pro.ts b/src/analytics/pro.ts new file mode 100644 index 000000000..c8221be5b --- /dev/null +++ b/src/analytics/pro.ts @@ -0,0 +1,15 @@ +/** Analytics Pro module — tsb analytics library. */ +export interface Analytics proOptions { tol?: number; maxIter?: number; } +export interface Analytics proResult { values: number[]; converged: boolean; } +export function computeAnalytics pro(data: number[], opts: Analytics proOptions = {}): Analytics proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics pro }; diff --git a/src/analytics/referral.ts b/src/analytics/referral.ts new file mode 100644 index 000000000..e9d8b622f --- /dev/null +++ b/src/analytics/referral.ts @@ -0,0 +1,22 @@ +/** Referral module — tsb analytics library. */ + +/** Options for Referral. */ +export interface ReferralOptions { tol?: number; maxIter?: number; } + +/** Result from Referral. */ +export interface ReferralResult { values: number[]; converged: boolean; } + +/** Compute Referral. */ +export function computeReferral(data: number[], opts: ReferralOptions = {}): ReferralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeReferral }; diff --git a/src/analytics/retention.ts b/src/analytics/retention.ts new file mode 100644 index 000000000..f0956cb16 --- /dev/null +++ b/src/analytics/retention.ts @@ -0,0 +1,22 @@ +/** Retention module — tsb analytics library. */ + +/** Options for Retention. */ +export interface RetentionOptions { tol?: number; maxIter?: number; } + +/** Result from Retention. */ +export interface RetentionResult { values: number[]; converged: boolean; } + +/** Compute Retention. */ +export function computeRetention(data: number[], opts: RetentionOptions = {}): RetentionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRetention }; diff --git a/src/analytics/robust.ts b/src/analytics/robust.ts new file mode 100644 index 000000000..feca18aa1 --- /dev/null +++ b/src/analytics/robust.ts @@ -0,0 +1,15 @@ +/** Analytics Robust module — tsb analytics library. */ +export interface Analytics robustOptions { tol?: number; maxIter?: number; } +export interface Analytics robustResult { values: number[]; converged: boolean; } +export function computeAnalytics robust(data: number[], opts: Analytics robustOptions = {}): Analytics robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics robust }; diff --git a/src/analytics/rollout.ts b/src/analytics/rollout.ts new file mode 100644 index 000000000..c405f514a --- /dev/null +++ b/src/analytics/rollout.ts @@ -0,0 +1,22 @@ +/** Rollout module — tsb analytics library. */ + +/** Options for Rollout. */ +export interface RolloutOptions { tol?: number; maxIter?: number; } + +/** Result from Rollout. */ +export interface RolloutResult { values: number[]; converged: boolean; } + +/** Compute Rollout. */ +export function computeRollout(data: number[], opts: RolloutOptions = {}): RolloutResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRollout }; diff --git a/src/analytics/seasonality.ts b/src/analytics/seasonality.ts new file mode 100644 index 000000000..5eaefbded --- /dev/null +++ b/src/analytics/seasonality.ts @@ -0,0 +1,22 @@ +/** Seasonality module — tsb analytics library. */ + +/** Options for Seasonality. */ +export interface SeasonalityOptions { tol?: number; maxIter?: number; } + +/** Result from Seasonality. */ +export interface SeasonalityResult { values: number[]; converged: boolean; } + +/** Compute Seasonality. */ +export function computeSeasonality(data: number[], opts: SeasonalityOptions = {}): SeasonalityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSeasonality }; diff --git a/src/analytics/segmentation.ts b/src/analytics/segmentation.ts new file mode 100644 index 000000000..c74e19ce2 --- /dev/null +++ b/src/analytics/segmentation.ts @@ -0,0 +1,22 @@ +/** Segmentation module — tsb analytics library. */ + +/** Options for Segmentation. */ +export interface SegmentationOptions { tol?: number; maxIter?: number; } + +/** Result from Segmentation. */ +export interface SegmentationResult { values: number[]; converged: boolean; } + +/** Compute Segmentation. */ +export function computeSegmentation(data: number[], opts: SegmentationOptions = {}): SegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSegmentation }; diff --git a/src/analytics/small.ts b/src/analytics/small.ts new file mode 100644 index 000000000..e22c64e74 --- /dev/null +++ b/src/analytics/small.ts @@ -0,0 +1,15 @@ +/** Analytics Small module — tsb analytics library. */ +export interface Analytics smallOptions { tol?: number; maxIter?: number; } +export interface Analytics smallResult { values: number[]; converged: boolean; } +export function computeAnalytics small(data: number[], opts: Analytics smallOptions = {}): Analytics smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics small }; diff --git a/src/analytics/sparse.ts b/src/analytics/sparse.ts new file mode 100644 index 000000000..e7ae41768 --- /dev/null +++ b/src/analytics/sparse.ts @@ -0,0 +1,15 @@ +/** Analytics Sparse module — tsb analytics library. */ +export interface Analytics sparseOptions { tol?: number; maxIter?: number; } +export interface Analytics sparseResult { values: number[]; converged: boolean; } +export function computeAnalytics sparse(data: number[], opts: Analytics sparseOptions = {}): Analytics sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics sparse }; diff --git a/src/analytics/stable.ts b/src/analytics/stable.ts new file mode 100644 index 000000000..53807cf9e --- /dev/null +++ b/src/analytics/stable.ts @@ -0,0 +1,15 @@ +/** Analytics Stable module — tsb analytics library. */ +export interface Analytics stableOptions { tol?: number; maxIter?: number; } +export interface Analytics stableResult { values: number[]; converged: boolean; } +export function computeAnalytics stable(data: number[], opts: Analytics stableOptions = {}): Analytics stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics stable }; diff --git a/src/analytics/streaming.ts b/src/analytics/streaming.ts new file mode 100644 index 000000000..c967778fd --- /dev/null +++ b/src/analytics/streaming.ts @@ -0,0 +1,15 @@ +/** Analytics Streaming module — tsb analytics library. */ +export interface Analytics streamingOptions { tol?: number; maxIter?: number; } +export interface Analytics streamingResult { values: number[]; converged: boolean; } +export function computeAnalytics streaming(data: number[], opts: Analytics streamingOptions = {}): Analytics streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics streaming }; diff --git a/src/analytics/trend.ts b/src/analytics/trend.ts new file mode 100644 index 000000000..801716a31 --- /dev/null +++ b/src/analytics/trend.ts @@ -0,0 +1,22 @@ +/** Trend module — tsb analytics library. */ + +/** Options for Trend. */ +export interface TrendOptions { tol?: number; maxIter?: number; } + +/** Result from Trend. */ +export interface TrendResult { values: number[]; converged: boolean; } + +/** Compute Trend. */ +export function computeTrend(data: number[], opts: TrendOptions = {}): TrendResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeTrend }; diff --git a/src/analytics/v2.ts b/src/analytics/v2.ts new file mode 100644 index 000000000..f5ca5c0ad --- /dev/null +++ b/src/analytics/v2.ts @@ -0,0 +1,15 @@ +/** Analytics V2 module — tsb analytics library. */ +export interface Analytics v2Options { tol?: number; maxIter?: number; } +export interface Analytics v2Result { values: number[]; converged: boolean; } +export function computeAnalytics v2(data: number[], opts: Analytics v2Options = {}): Analytics v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics v2 }; diff --git a/src/analytics/v3.ts b/src/analytics/v3.ts new file mode 100644 index 000000000..daa16e321 --- /dev/null +++ b/src/analytics/v3.ts @@ -0,0 +1,15 @@ +/** Analytics V3 module — tsb analytics library. */ +export interface Analytics v3Options { tol?: number; maxIter?: number; } +export interface Analytics v3Result { values: number[]; converged: boolean; } +export function computeAnalytics v3(data: number[], opts: Analytics v3Options = {}): Analytics v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics v3 }; diff --git a/src/analytics/virality.ts b/src/analytics/virality.ts new file mode 100644 index 000000000..676622c1a --- /dev/null +++ b/src/analytics/virality.ts @@ -0,0 +1,22 @@ +/** Virality module — tsb analytics library. */ + +/** Options for Virality. */ +export interface ViralityOptions { tol?: number; maxIter?: number; } + +/** Result from Virality. */ +export interface ViralityResult { values: number[]; converged: boolean; } + +/** Compute Virality. */ +export function computeVirality(data: number[], opts: ViralityOptions = {}): ViralityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeVirality }; diff --git a/src/analytics/wasm.ts b/src/analytics/wasm.ts new file mode 100644 index 000000000..bebfdc585 --- /dev/null +++ b/src/analytics/wasm.ts @@ -0,0 +1,15 @@ +/** Analytics Wasm module — tsb analytics library. */ +export interface Analytics wasmOptions { tol?: number; maxIter?: number; } +export interface Analytics wasmResult { values: number[]; converged: boolean; } +export function computeAnalytics wasm(data: number[], opts: Analytics wasmOptions = {}): Analytics wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics wasm }; diff --git a/src/analytics/xlarge.ts b/src/analytics/xlarge.ts new file mode 100644 index 000000000..dcd5bd528 --- /dev/null +++ b/src/analytics/xlarge.ts @@ -0,0 +1,15 @@ +/** Analytics Xlarge module — tsb analytics library. */ +export interface Analytics xlargeOptions { tol?: number; maxIter?: number; } +export interface Analytics xlargeResult { values: number[]; converged: boolean; } +export function computeAnalytics xlarge(data: number[], opts: Analytics xlargeOptions = {}): Analytics xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnalytics xlarge }; diff --git a/src/anthropology/advanced.ts b/src/anthropology/advanced.ts new file mode 100644 index 000000000..3130d27e4 --- /dev/null +++ b/src/anthropology/advanced.ts @@ -0,0 +1,15 @@ +/** Anthropology Advanced module — tsb analytics library. */ +export interface Anthropology advancedOptions { tol?: number; maxIter?: number; } +export interface Anthropology advancedResult { values: number[]; converged: boolean; } +export function computeAnthropology advanced(data: number[], opts: Anthropology advancedOptions = {}): Anthropology advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology advanced }; diff --git a/src/anthropology/ancient_dna.ts b/src/anthropology/ancient_dna.ts new file mode 100644 index 000000000..285bbdcbc --- /dev/null +++ b/src/anthropology/ancient_dna.ts @@ -0,0 +1,22 @@ +/** Ancient Dna module — tsb analytics library. */ + +/** Options for Ancient Dna. */ +export interface AncientDnaOptions { tol?: number; maxIter?: number; } + +/** Result from Ancient Dna. */ +export interface AncientDnaResult { values: number[]; converged: boolean; } + +/** Compute Ancient Dna. */ +export function computeAncientDna(data: number[], opts: AncientDnaOptions = {}): AncientDnaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAncientDna }; diff --git a/src/anthropology/archaeobotany.ts b/src/anthropology/archaeobotany.ts new file mode 100644 index 000000000..7ba20a611 --- /dev/null +++ b/src/anthropology/archaeobotany.ts @@ -0,0 +1,22 @@ +/** Archaeobotany module — tsb analytics library. */ + +/** Options for Archaeobotany. */ +export interface ArchaeobotanyOptions { tol?: number; maxIter?: number; } + +/** Result from Archaeobotany. */ +export interface ArchaeobotanyResult { values: number[]; converged: boolean; } + +/** Compute Archaeobotany. */ +export function computeArchaeobotany(data: number[], opts: ArchaeobotanyOptions = {}): ArchaeobotanyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeArchaeobotany }; diff --git a/src/anthropology/archaeological.ts b/src/anthropology/archaeological.ts new file mode 100644 index 000000000..5a679f298 --- /dev/null +++ b/src/anthropology/archaeological.ts @@ -0,0 +1,22 @@ +/** Archaeological module — tsb analytics library. */ + +/** Options for Archaeological. */ +export interface ArchaeologicalOptions { tol?: number; maxIter?: number; } + +/** Result from Archaeological. */ +export interface ArchaeologicalResult { values: number[]; converged: boolean; } + +/** Compute Archaeological. */ +export function computeArchaeological(data: number[], opts: ArchaeologicalOptions = {}): ArchaeologicalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeArchaeological }; diff --git a/src/anthropology/argon_argon.ts b/src/anthropology/argon_argon.ts new file mode 100644 index 000000000..0f839a06d --- /dev/null +++ b/src/anthropology/argon_argon.ts @@ -0,0 +1,22 @@ +/** Argon Argon module — tsb analytics library. */ + +/** Options for Argon Argon. */ +export interface ArgonArgonOptions { tol?: number; maxIter?: number; } + +/** Result from Argon Argon. */ +export interface ArgonArgonResult { values: number[]; converged: boolean; } + +/** Compute Argon Argon. */ +export function computeArgonArgon(data: number[], opts: ArgonArgonOptions = {}): ArgonArgonResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeArgonArgon }; diff --git a/src/anthropology/base2.ts b/src/anthropology/base2.ts new file mode 100644 index 000000000..3dabfcb9b --- /dev/null +++ b/src/anthropology/base2.ts @@ -0,0 +1,15 @@ +/** Anthropology Base2 module — tsb analytics library. */ +export interface Anthropology base2Options { tol?: number; maxIter?: number; } +export interface Anthropology base2Result { values: number[]; converged: boolean; } +export function computeAnthropology base2(data: number[], opts: Anthropology base2Options = {}): Anthropology base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology base2 }; diff --git a/src/anthropology/batch.ts b/src/anthropology/batch.ts new file mode 100644 index 000000000..5a7054966 --- /dev/null +++ b/src/anthropology/batch.ts @@ -0,0 +1,15 @@ +/** Anthropology Batch module — tsb analytics library. */ +export interface Anthropology batchOptions { tol?: number; maxIter?: number; } +export interface Anthropology batchResult { values: number[]; converged: boolean; } +export function computeAnthropology batch(data: number[], opts: Anthropology batchOptions = {}): Anthropology batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology batch }; diff --git a/src/anthropology/beta.ts b/src/anthropology/beta.ts new file mode 100644 index 000000000..1565445f9 --- /dev/null +++ b/src/anthropology/beta.ts @@ -0,0 +1,15 @@ +/** Anthropology Beta module — tsb analytics library. */ +export interface Anthropology betaOptions { tol?: number; maxIter?: number; } +export interface Anthropology betaResult { values: number[]; converged: boolean; } +export function computeAnthropology beta(data: number[], opts: Anthropology betaOptions = {}): Anthropology betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology beta }; diff --git a/src/anthropology/biological.ts b/src/anthropology/biological.ts new file mode 100644 index 000000000..d3df352ad --- /dev/null +++ b/src/anthropology/biological.ts @@ -0,0 +1,22 @@ +/** Biological module — tsb analytics library. */ + +/** Options for Biological. */ +export interface BiologicalOptions { tol?: number; maxIter?: number; } + +/** Result from Biological. */ +export interface BiologicalResult { values: number[]; converged: boolean; } + +/** Compute Biological. */ +export function computeBiological(data: number[], opts: BiologicalOptions = {}): BiologicalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBiological }; diff --git a/src/anthropology/cosmogenic_anth.ts b/src/anthropology/cosmogenic_anth.ts new file mode 100644 index 000000000..077b119ed --- /dev/null +++ b/src/anthropology/cosmogenic_anth.ts @@ -0,0 +1,22 @@ +/** Cosmogenic Anth module — tsb analytics library. */ + +/** Options for Cosmogenic Anth. */ +export interface CosmogenicAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Cosmogenic Anth. */ +export interface CosmogenicAnthResult { values: number[]; converged: boolean; } + +/** Compute Cosmogenic Anth. */ +export function computeCosmogenicAnth(data: number[], opts: CosmogenicAnthOptions = {}): CosmogenicAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCosmogenicAnth }; diff --git a/src/anthropology/cpu.ts b/src/anthropology/cpu.ts new file mode 100644 index 000000000..3fa37827a --- /dev/null +++ b/src/anthropology/cpu.ts @@ -0,0 +1,15 @@ +/** Anthropology Cpu module — tsb analytics library. */ +export interface Anthropology cpuOptions { tol?: number; maxIter?: number; } +export interface Anthropology cpuResult { values: number[]; converged: boolean; } +export function computeAnthropology cpu(data: number[], opts: Anthropology cpuOptions = {}): Anthropology cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology cpu }; diff --git a/src/anthropology/cultural.ts b/src/anthropology/cultural.ts new file mode 100644 index 000000000..2e2c0c638 --- /dev/null +++ b/src/anthropology/cultural.ts @@ -0,0 +1,22 @@ +/** Cultural module — tsb analytics library. */ + +/** Options for Cultural. */ +export interface CulturalOptions { tol?: number; maxIter?: number; } + +/** Result from Cultural. */ +export interface CulturalResult { values: number[]; converged: boolean; } + +/** Compute Cultural. */ +export function computeCultural(data: number[], opts: CulturalOptions = {}): CulturalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCultural }; diff --git a/src/anthropology/dendrochronology.ts b/src/anthropology/dendrochronology.ts new file mode 100644 index 000000000..2fc187f89 --- /dev/null +++ b/src/anthropology/dendrochronology.ts @@ -0,0 +1,22 @@ +/** Dendrochronology module — tsb analytics library. */ + +/** Options for Dendrochronology. */ +export interface DendrochronologyOptions { tol?: number; maxIter?: number; } + +/** Result from Dendrochronology. */ +export interface DendrochronologyResult { values: number[]; converged: boolean; } + +/** Compute Dendrochronology. */ +export function computeDendrochronology(data: number[], opts: DendrochronologyOptions = {}): DendrochronologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDendrochronology }; diff --git a/src/anthropology/dense.ts b/src/anthropology/dense.ts new file mode 100644 index 000000000..b62e52ae6 --- /dev/null +++ b/src/anthropology/dense.ts @@ -0,0 +1,15 @@ +/** Anthropology Dense module — tsb analytics library. */ +export interface Anthropology denseOptions { tol?: number; maxIter?: number; } +export interface Anthropology denseResult { values: number[]; converged: boolean; } +export function computeAnthropology dense(data: number[], opts: Anthropology denseOptions = {}): Anthropology denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology dense }; diff --git a/src/anthropology/distributed.ts b/src/anthropology/distributed.ts new file mode 100644 index 000000000..a7323b6c9 --- /dev/null +++ b/src/anthropology/distributed.ts @@ -0,0 +1,15 @@ +/** Anthropology Distributed module — tsb analytics library. */ +export interface Anthropology distributedOptions { tol?: number; maxIter?: number; } +export interface Anthropology distributedResult { values: number[]; converged: boolean; } +export function computeAnthropology distributed(data: number[], opts: Anthropology distributedOptions = {}): Anthropology distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology distributed }; diff --git a/src/anthropology/electron_spin.ts b/src/anthropology/electron_spin.ts new file mode 100644 index 000000000..0546ca27d --- /dev/null +++ b/src/anthropology/electron_spin.ts @@ -0,0 +1,22 @@ +/** Electron Spin module — tsb analytics library. */ + +/** Options for Electron Spin. */ +export interface ElectronSpinOptions { tol?: number; maxIter?: number; } + +/** Result from Electron Spin. */ +export interface ElectronSpinResult { values: number[]; converged: boolean; } + +/** Compute Electron Spin. */ +export function computeElectronSpin(data: number[], opts: ElectronSpinOptions = {}): ElectronSpinResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeElectronSpin }; diff --git a/src/anthropology/experimental.ts b/src/anthropology/experimental.ts new file mode 100644 index 000000000..03c3f2596 --- /dev/null +++ b/src/anthropology/experimental.ts @@ -0,0 +1,15 @@ +/** Anthropology Experimental module — tsb analytics library. */ +export interface Anthropology experimentalOptions { tol?: number; maxIter?: number; } +export interface Anthropology experimentalResult { values: number[]; converged: boolean; } +export function computeAnthropology experimental(data: number[], opts: Anthropology experimentalOptions = {}): Anthropology experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology experimental }; diff --git a/src/anthropology/fast.ts b/src/anthropology/fast.ts new file mode 100644 index 000000000..dbf51f916 --- /dev/null +++ b/src/anthropology/fast.ts @@ -0,0 +1,15 @@ +/** Anthropology Fast module — tsb analytics library. */ +export interface Anthropology fastOptions { tol?: number; maxIter?: number; } +export interface Anthropology fastResult { values: number[]; converged: boolean; } +export function computeAnthropology fast(data: number[], opts: Anthropology fastOptions = {}): Anthropology fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology fast }; diff --git a/src/anthropology/fission_track.ts b/src/anthropology/fission_track.ts new file mode 100644 index 000000000..449597244 --- /dev/null +++ b/src/anthropology/fission_track.ts @@ -0,0 +1,22 @@ +/** Fission Track module — tsb analytics library. */ + +/** Options for Fission Track. */ +export interface FissionTrackOptions { tol?: number; maxIter?: number; } + +/** Result from Fission Track. */ +export interface FissionTrackResult { values: number[]; converged: boolean; } + +/** Compute Fission Track. */ +export function computeFissionTrack(data: number[], opts: FissionTrackOptions = {}): FissionTrackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFissionTrack }; diff --git a/src/anthropology/future.ts b/src/anthropology/future.ts new file mode 100644 index 000000000..ceb741784 --- /dev/null +++ b/src/anthropology/future.ts @@ -0,0 +1,15 @@ +/** Anthropology Future module — tsb analytics library. */ +export interface Anthropology futureOptions { tol?: number; maxIter?: number; } +export interface Anthropology futureResult { values: number[]; converged: boolean; } +export function computeAnthropology future(data: number[], opts: Anthropology futureOptions = {}): Anthropology futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology future }; diff --git a/src/anthropology/geoarchaeology.ts b/src/anthropology/geoarchaeology.ts new file mode 100644 index 000000000..f2945d472 --- /dev/null +++ b/src/anthropology/geoarchaeology.ts @@ -0,0 +1,22 @@ +/** Geoarchaeology module — tsb analytics library. */ + +/** Options for Geoarchaeology. */ +export interface GeoarchaeologyOptions { tol?: number; maxIter?: number; } + +/** Result from Geoarchaeology. */ +export interface GeoarchaeologyResult { values: number[]; converged: boolean; } + +/** Compute Geoarchaeology. */ +export function computeGeoarchaeology(data: number[], opts: GeoarchaeologyOptions = {}): GeoarchaeologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGeoarchaeology }; diff --git a/src/anthropology/gis_anth.ts b/src/anthropology/gis_anth.ts new file mode 100644 index 000000000..6dd9ac72a --- /dev/null +++ b/src/anthropology/gis_anth.ts @@ -0,0 +1,22 @@ +/** Gis Anth module — tsb analytics library. */ + +/** Options for Gis Anth. */ +export interface GisAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Gis Anth. */ +export interface GisAnthResult { values: number[]; converged: boolean; } + +/** Compute Gis Anth. */ +export function computeGisAnth(data: number[], opts: GisAnthOptions = {}): GisAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGisAnth }; diff --git a/src/anthropology/gpu.ts b/src/anthropology/gpu.ts new file mode 100644 index 000000000..f141d11f0 --- /dev/null +++ b/src/anthropology/gpu.ts @@ -0,0 +1,15 @@ +/** Anthropology Gpu module — tsb analytics library. */ +export interface Anthropology gpuOptions { tol?: number; maxIter?: number; } +export interface Anthropology gpuResult { values: number[]; converged: boolean; } +export function computeAnthropology gpu(data: number[], opts: Anthropology gpuOptions = {}): Anthropology gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology gpu }; diff --git a/src/anthropology/human_evolution.ts b/src/anthropology/human_evolution.ts new file mode 100644 index 000000000..531f74ad4 --- /dev/null +++ b/src/anthropology/human_evolution.ts @@ -0,0 +1,22 @@ +/** Human Evolution module — tsb analytics library. */ + +/** Options for Human Evolution. */ +export interface HumanEvolutionOptions { tol?: number; maxIter?: number; } + +/** Result from Human Evolution. */ +export interface HumanEvolutionResult { values: number[]; converged: boolean; } + +/** Compute Human Evolution. */ +export function computeHumanEvolution(data: number[], opts: HumanEvolutionOptions = {}): HumanEvolutionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeHumanEvolution }; diff --git a/src/anthropology/landscape_anth.ts b/src/anthropology/landscape_anth.ts new file mode 100644 index 000000000..33687d515 --- /dev/null +++ b/src/anthropology/landscape_anth.ts @@ -0,0 +1,22 @@ +/** Landscape Anth module — tsb analytics library. */ + +/** Options for Landscape Anth. */ +export interface LandscapeAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Landscape Anth. */ +export interface LandscapeAnthResult { values: number[]; converged: boolean; } + +/** Compute Landscape Anth. */ +export function computeLandscapeAnth(data: number[], opts: LandscapeAnthOptions = {}): LandscapeAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLandscapeAnth }; diff --git a/src/anthropology/large.ts b/src/anthropology/large.ts new file mode 100644 index 000000000..9e7b893eb --- /dev/null +++ b/src/anthropology/large.ts @@ -0,0 +1,15 @@ +/** Anthropology Large module — tsb analytics library. */ +export interface Anthropology largeOptions { tol?: number; maxIter?: number; } +export interface Anthropology largeResult { values: number[]; converged: boolean; } +export function computeAnthropology large(data: number[], opts: Anthropology largeOptions = {}): Anthropology largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology large }; diff --git a/src/anthropology/legacy.ts b/src/anthropology/legacy.ts new file mode 100644 index 000000000..53e406c21 --- /dev/null +++ b/src/anthropology/legacy.ts @@ -0,0 +1,15 @@ +/** Anthropology Legacy module — tsb analytics library. */ +export interface Anthropology legacyOptions { tol?: number; maxIter?: number; } +export interface Anthropology legacyResult { values: number[]; converged: boolean; } +export function computeAnthropology legacy(data: number[], opts: Anthropology legacyOptions = {}): Anthropology legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology legacy }; diff --git a/src/anthropology/linguistic_anth.ts b/src/anthropology/linguistic_anth.ts new file mode 100644 index 000000000..da26c6912 --- /dev/null +++ b/src/anthropology/linguistic_anth.ts @@ -0,0 +1,22 @@ +/** Linguistic Anth module — tsb analytics library. */ + +/** Options for Linguistic Anth. */ +export interface LinguisticAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Linguistic Anth. */ +export interface LinguisticAnthResult { values: number[]; converged: boolean; } + +/** Compute Linguistic Anth. */ +export function computeLinguisticAnth(data: number[], opts: LinguisticAnthOptions = {}): LinguisticAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLinguisticAnth }; diff --git a/src/anthropology/lite.ts b/src/anthropology/lite.ts new file mode 100644 index 000000000..bb59a047c --- /dev/null +++ b/src/anthropology/lite.ts @@ -0,0 +1,15 @@ +/** Anthropology Lite module — tsb analytics library. */ +export interface Anthropology liteOptions { tol?: number; maxIter?: number; } +export interface Anthropology liteResult { values: number[]; converged: boolean; } +export function computeAnthropology lite(data: number[], opts: Anthropology liteOptions = {}): Anthropology liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology lite }; diff --git a/src/anthropology/luminescence.ts b/src/anthropology/luminescence.ts new file mode 100644 index 000000000..095858484 --- /dev/null +++ b/src/anthropology/luminescence.ts @@ -0,0 +1,22 @@ +/** Luminescence module — tsb analytics library. */ + +/** Options for Luminescence. */ +export interface LuminescenceOptions { tol?: number; maxIter?: number; } + +/** Result from Luminescence. */ +export interface LuminescenceResult { values: number[]; converged: boolean; } + +/** Compute Luminescence. */ +export function computeLuminescence(data: number[], opts: LuminescenceOptions = {}): LuminescenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLuminescence }; diff --git a/src/anthropology/mini.ts b/src/anthropology/mini.ts new file mode 100644 index 000000000..939776abb --- /dev/null +++ b/src/anthropology/mini.ts @@ -0,0 +1,15 @@ +/** Anthropology Mini module — tsb analytics library. */ +export interface Anthropology miniOptions { tol?: number; maxIter?: number; } +export interface Anthropology miniResult { values: number[]; converged: boolean; } +export function computeAnthropology mini(data: number[], opts: Anthropology miniOptions = {}): Anthropology miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology mini }; diff --git a/src/anthropology/modern_human_origins.ts b/src/anthropology/modern_human_origins.ts new file mode 100644 index 000000000..ec590bac5 --- /dev/null +++ b/src/anthropology/modern_human_origins.ts @@ -0,0 +1,22 @@ +/** Modern Human Origins module — tsb analytics library. */ + +/** Options for Modern Human Origins. */ +export interface ModernHumanOriginsOptions { tol?: number; maxIter?: number; } + +/** Result from Modern Human Origins. */ +export interface ModernHumanOriginsResult { values: number[]; converged: boolean; } + +/** Compute Modern Human Origins. */ +export function computeModernHumanOrigins(data: number[], opts: ModernHumanOriginsOptions = {}): ModernHumanOriginsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeModernHumanOrigins }; diff --git a/src/anthropology/molecular.ts b/src/anthropology/molecular.ts new file mode 100644 index 000000000..114ab3253 --- /dev/null +++ b/src/anthropology/molecular.ts @@ -0,0 +1,22 @@ +/** Molecular module — tsb analytics library. */ + +/** Options for Molecular. */ +export interface MolecularOptions { tol?: number; maxIter?: number; } + +/** Result from Molecular. */ +export interface MolecularResult { values: number[]; converged: boolean; } + +/** Compute Molecular. */ +export function computeMolecular(data: number[], opts: MolecularOptions = {}): MolecularResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMolecular }; diff --git a/src/anthropology/morphometry.ts b/src/anthropology/morphometry.ts new file mode 100644 index 000000000..860eb6fc7 --- /dev/null +++ b/src/anthropology/morphometry.ts @@ -0,0 +1,22 @@ +/** Morphometry module — tsb analytics library. */ + +/** Options for Morphometry. */ +export interface MorphometryOptions { tol?: number; maxIter?: number; } + +/** Result from Morphometry. */ +export interface MorphometryResult { values: number[]; converged: boolean; } + +/** Compute Morphometry. */ +export function computeMorphometry(data: number[], opts: MorphometryOptions = {}): MorphometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMorphometry }; diff --git a/src/anthropology/next.ts b/src/anthropology/next.ts new file mode 100644 index 000000000..154ad3343 --- /dev/null +++ b/src/anthropology/next.ts @@ -0,0 +1,15 @@ +/** Anthropology Next module — tsb analytics library. */ +export interface Anthropology nextOptions { tol?: number; maxIter?: number; } +export interface Anthropology nextResult { values: number[]; converged: boolean; } +export function computeAnthropology next(data: number[], opts: Anthropology nextOptions = {}): Anthropology nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology next }; diff --git a/src/anthropology/online.ts b/src/anthropology/online.ts new file mode 100644 index 000000000..8dcd7cc29 --- /dev/null +++ b/src/anthropology/online.ts @@ -0,0 +1,15 @@ +/** Anthropology Online module — tsb analytics library. */ +export interface Anthropology onlineOptions { tol?: number; maxIter?: number; } +export interface Anthropology onlineResult { values: number[]; converged: boolean; } +export function computeAnthropology online(data: number[], opts: Anthropology onlineOptions = {}): Anthropology onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology online }; diff --git a/src/anthropology/paleoanthropology.ts b/src/anthropology/paleoanthropology.ts new file mode 100644 index 000000000..3376d8e32 --- /dev/null +++ b/src/anthropology/paleoanthropology.ts @@ -0,0 +1,22 @@ +/** Paleoanthropology module — tsb analytics library. */ + +/** Options for Paleoanthropology. */ +export interface PaleoanthropologyOptions { tol?: number; maxIter?: number; } + +/** Result from Paleoanthropology. */ +export interface PaleoanthropologyResult { values: number[]; converged: boolean; } + +/** Compute Paleoanthropology. */ +export function computePaleoanthropology(data: number[], opts: PaleoanthropologyOptions = {}): PaleoanthropologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePaleoanthropology }; diff --git a/src/anthropology/parallel.ts b/src/anthropology/parallel.ts new file mode 100644 index 000000000..6c447a595 --- /dev/null +++ b/src/anthropology/parallel.ts @@ -0,0 +1,15 @@ +/** Anthropology Parallel module — tsb analytics library. */ +export interface Anthropology parallelOptions { tol?: number; maxIter?: number; } +export interface Anthropology parallelResult { values: number[]; converged: boolean; } +export function computeAnthropology parallel(data: number[], opts: Anthropology parallelOptions = {}): Anthropology parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology parallel }; diff --git a/src/anthropology/physical.ts b/src/anthropology/physical.ts new file mode 100644 index 000000000..211999352 --- /dev/null +++ b/src/anthropology/physical.ts @@ -0,0 +1,22 @@ +/** Physical module — tsb analytics library. */ + +/** Options for Physical. */ +export interface PhysicalOptions { tol?: number; maxIter?: number; } + +/** Result from Physical. */ +export interface PhysicalResult { values: number[]; converged: boolean; } + +/** Compute Physical. */ +export function computePhysical(data: number[], opts: PhysicalOptions = {}): PhysicalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePhysical }; diff --git a/src/anthropology/plus.ts b/src/anthropology/plus.ts new file mode 100644 index 000000000..b285f4155 --- /dev/null +++ b/src/anthropology/plus.ts @@ -0,0 +1,15 @@ +/** Anthropology Plus module — tsb analytics library. */ +export interface Anthropology plusOptions { tol?: number; maxIter?: number; } +export interface Anthropology plusResult { values: number[]; converged: boolean; } +export function computeAnthropology plus(data: number[], opts: Anthropology plusOptions = {}): Anthropology plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology plus }; diff --git a/src/anthropology/population_genetics_anth.ts b/src/anthropology/population_genetics_anth.ts new file mode 100644 index 000000000..28b2cf5f9 --- /dev/null +++ b/src/anthropology/population_genetics_anth.ts @@ -0,0 +1,22 @@ +/** Population Genetics Anth module — tsb analytics library. */ + +/** Options for Population Genetics Anth. */ +export interface PopulationGeneticsAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Population Genetics Anth. */ +export interface PopulationGeneticsAnthResult { values: number[]; converged: boolean; } + +/** Compute Population Genetics Anth. */ +export function computePopulationGeneticsAnth(data: number[], opts: PopulationGeneticsAnthOptions = {}): PopulationGeneticsAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePopulationGeneticsAnth }; diff --git a/src/anthropology/potassium_argon.ts b/src/anthropology/potassium_argon.ts new file mode 100644 index 000000000..da13b0b72 --- /dev/null +++ b/src/anthropology/potassium_argon.ts @@ -0,0 +1,22 @@ +/** Potassium Argon module — tsb analytics library. */ + +/** Options for Potassium Argon. */ +export interface PotassiumArgonOptions { tol?: number; maxIter?: number; } + +/** Result from Potassium Argon. */ +export interface PotassiumArgonResult { values: number[]; converged: boolean; } + +/** Compute Potassium Argon. */ +export function computePotassiumArgon(data: number[], opts: PotassiumArgonOptions = {}): PotassiumArgonResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePotassiumArgon }; diff --git a/src/anthropology/primatology.ts b/src/anthropology/primatology.ts new file mode 100644 index 000000000..c29325fe9 --- /dev/null +++ b/src/anthropology/primatology.ts @@ -0,0 +1,22 @@ +/** Primatology module — tsb analytics library. */ + +/** Options for Primatology. */ +export interface PrimatologyOptions { tol?: number; maxIter?: number; } + +/** Result from Primatology. */ +export interface PrimatologyResult { values: number[]; converged: boolean; } + +/** Compute Primatology. */ +export function computePrimatology(data: number[], opts: PrimatologyOptions = {}): PrimatologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePrimatology }; diff --git a/src/anthropology/pro.ts b/src/anthropology/pro.ts new file mode 100644 index 000000000..3f279bd15 --- /dev/null +++ b/src/anthropology/pro.ts @@ -0,0 +1,15 @@ +/** Anthropology Pro module — tsb analytics library. */ +export interface Anthropology proOptions { tol?: number; maxIter?: number; } +export interface Anthropology proResult { values: number[]; converged: boolean; } +export function computeAnthropology pro(data: number[], opts: Anthropology proOptions = {}): Anthropology proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology pro }; diff --git a/src/anthropology/radiocarbon.ts b/src/anthropology/radiocarbon.ts new file mode 100644 index 000000000..559dfb1c2 --- /dev/null +++ b/src/anthropology/radiocarbon.ts @@ -0,0 +1,22 @@ +/** Radiocarbon module — tsb analytics library. */ + +/** Options for Radiocarbon. */ +export interface RadiocarbonOptions { tol?: number; maxIter?: number; } + +/** Result from Radiocarbon. */ +export interface RadiocarbonResult { values: number[]; converged: boolean; } + +/** Compute Radiocarbon. */ +export function computeRadiocarbon(data: number[], opts: RadiocarbonOptions = {}): RadiocarbonResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRadiocarbon }; diff --git a/src/anthropology/remote_sensing_anth.ts b/src/anthropology/remote_sensing_anth.ts new file mode 100644 index 000000000..3140b8349 --- /dev/null +++ b/src/anthropology/remote_sensing_anth.ts @@ -0,0 +1,22 @@ +/** Remote Sensing Anth module — tsb analytics library. */ + +/** Options for Remote Sensing Anth. */ +export interface RemoteSensingAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Remote Sensing Anth. */ +export interface RemoteSensingAnthResult { values: number[]; converged: boolean; } + +/** Compute Remote Sensing Anth. */ +export function computeRemoteSensingAnth(data: number[], opts: RemoteSensingAnthOptions = {}): RemoteSensingAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRemoteSensingAnth }; diff --git a/src/anthropology/robust.ts b/src/anthropology/robust.ts new file mode 100644 index 000000000..37faec9fb --- /dev/null +++ b/src/anthropology/robust.ts @@ -0,0 +1,15 @@ +/** Anthropology Robust module — tsb analytics library. */ +export interface Anthropology robustOptions { tol?: number; maxIter?: number; } +export interface Anthropology robustResult { values: number[]; converged: boolean; } +export function computeAnthropology robust(data: number[], opts: Anthropology robustOptions = {}): Anthropology robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology robust }; diff --git a/src/anthropology/small.ts b/src/anthropology/small.ts new file mode 100644 index 000000000..75e092f73 --- /dev/null +++ b/src/anthropology/small.ts @@ -0,0 +1,15 @@ +/** Anthropology Small module — tsb analytics library. */ +export interface Anthropology smallOptions { tol?: number; maxIter?: number; } +export interface Anthropology smallResult { values: number[]; converged: boolean; } +export function computeAnthropology small(data: number[], opts: Anthropology smallOptions = {}): Anthropology smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology small }; diff --git a/src/anthropology/sparse.ts b/src/anthropology/sparse.ts new file mode 100644 index 000000000..8c4fbd6b3 --- /dev/null +++ b/src/anthropology/sparse.ts @@ -0,0 +1,15 @@ +/** Anthropology Sparse module — tsb analytics library. */ +export interface Anthropology sparseOptions { tol?: number; maxIter?: number; } +export interface Anthropology sparseResult { values: number[]; converged: boolean; } +export function computeAnthropology sparse(data: number[], opts: Anthropology sparseOptions = {}): Anthropology sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology sparse }; diff --git a/src/anthropology/stable.ts b/src/anthropology/stable.ts new file mode 100644 index 000000000..513a4dd99 --- /dev/null +++ b/src/anthropology/stable.ts @@ -0,0 +1,15 @@ +/** Anthropology Stable module — tsb analytics library. */ +export interface Anthropology stableOptions { tol?: number; maxIter?: number; } +export interface Anthropology stableResult { values: number[]; converged: boolean; } +export function computeAnthropology stable(data: number[], opts: Anthropology stableOptions = {}): Anthropology stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology stable }; diff --git a/src/anthropology/stable_isotope_anth.ts b/src/anthropology/stable_isotope_anth.ts new file mode 100644 index 000000000..e0e6db7a3 --- /dev/null +++ b/src/anthropology/stable_isotope_anth.ts @@ -0,0 +1,22 @@ +/** Stable Isotope Anth module — tsb analytics library. */ + +/** Options for Stable Isotope Anth. */ +export interface StableIsotopeAnthOptions { tol?: number; maxIter?: number; } + +/** Result from Stable Isotope Anth. */ +export interface StableIsotopeAnthResult { values: number[]; converged: boolean; } + +/** Compute Stable Isotope Anth. */ +export function computeStableIsotopeAnth(data: number[], opts: StableIsotopeAnthOptions = {}): StableIsotopeAnthResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeStableIsotopeAnth }; diff --git a/src/anthropology/streaming.ts b/src/anthropology/streaming.ts new file mode 100644 index 000000000..80229f72f --- /dev/null +++ b/src/anthropology/streaming.ts @@ -0,0 +1,15 @@ +/** Anthropology Streaming module — tsb analytics library. */ +export interface Anthropology streamingOptions { tol?: number; maxIter?: number; } +export interface Anthropology streamingResult { values: number[]; converged: boolean; } +export function computeAnthropology streaming(data: number[], opts: Anthropology streamingOptions = {}): Anthropology streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology streaming }; diff --git a/src/anthropology/uranium_series.ts b/src/anthropology/uranium_series.ts new file mode 100644 index 000000000..b7d6d7945 --- /dev/null +++ b/src/anthropology/uranium_series.ts @@ -0,0 +1,22 @@ +/** Uranium Series module — tsb analytics library. */ + +/** Options for Uranium Series. */ +export interface UraniumSeriesOptions { tol?: number; maxIter?: number; } + +/** Result from Uranium Series. */ +export interface UraniumSeriesResult { values: number[]; converged: boolean; } + +/** Compute Uranium Series. */ +export function computeUraniumSeries(data: number[], opts: UraniumSeriesOptions = {}): UraniumSeriesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeUraniumSeries }; diff --git a/src/anthropology/v2.ts b/src/anthropology/v2.ts new file mode 100644 index 000000000..b2e2d9ffb --- /dev/null +++ b/src/anthropology/v2.ts @@ -0,0 +1,15 @@ +/** Anthropology V2 module — tsb analytics library. */ +export interface Anthropology v2Options { tol?: number; maxIter?: number; } +export interface Anthropology v2Result { values: number[]; converged: boolean; } +export function computeAnthropology v2(data: number[], opts: Anthropology v2Options = {}): Anthropology v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology v2 }; diff --git a/src/anthropology/v3.ts b/src/anthropology/v3.ts new file mode 100644 index 000000000..48c26b8fe --- /dev/null +++ b/src/anthropology/v3.ts @@ -0,0 +1,15 @@ +/** Anthropology V3 module — tsb analytics library. */ +export interface Anthropology v3Options { tol?: number; maxIter?: number; } +export interface Anthropology v3Result { values: number[]; converged: boolean; } +export function computeAnthropology v3(data: number[], opts: Anthropology v3Options = {}): Anthropology v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology v3 }; diff --git a/src/anthropology/wasm.ts b/src/anthropology/wasm.ts new file mode 100644 index 000000000..edf0be058 --- /dev/null +++ b/src/anthropology/wasm.ts @@ -0,0 +1,15 @@ +/** Anthropology Wasm module — tsb analytics library. */ +export interface Anthropology wasmOptions { tol?: number; maxIter?: number; } +export interface Anthropology wasmResult { values: number[]; converged: boolean; } +export function computeAnthropology wasm(data: number[], opts: Anthropology wasmOptions = {}): Anthropology wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology wasm }; diff --git a/src/anthropology/xlarge.ts b/src/anthropology/xlarge.ts new file mode 100644 index 000000000..456da32f5 --- /dev/null +++ b/src/anthropology/xlarge.ts @@ -0,0 +1,15 @@ +/** Anthropology Xlarge module — tsb analytics library. */ +export interface Anthropology xlargeOptions { tol?: number; maxIter?: number; } +export interface Anthropology xlargeResult { values: number[]; converged: boolean; } +export function computeAnthropology xlarge(data: number[], opts: Anthropology xlargeOptions = {}): Anthropology xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAnthropology xlarge }; diff --git a/src/anthropology/zooarchaeology.ts b/src/anthropology/zooarchaeology.ts new file mode 100644 index 000000000..4dbcbf701 --- /dev/null +++ b/src/anthropology/zooarchaeology.ts @@ -0,0 +1,22 @@ +/** Zooarchaeology module — tsb analytics library. */ + +/** Options for Zooarchaeology. */ +export interface ZooarchaeologyOptions { tol?: number; maxIter?: number; } + +/** Result from Zooarchaeology. */ +export interface ZooarchaeologyResult { values: number[]; converged: boolean; } + +/** Compute Zooarchaeology. */ +export function computeZooarchaeology(data: number[], opts: ZooarchaeologyOptions = {}): ZooarchaeologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeZooarchaeology }; diff --git a/src/aquaculture_sci/adaptation.ts b/src/aquaculture_sci/adaptation.ts new file mode 100644 index 000000000..75012c6c0 --- /dev/null +++ b/src/aquaculture_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci adaptation module — tsb analytics library. */ +export interface AquacultureSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciAdaptationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciAdaptation(data: number[], opts: AquacultureSciAdaptationOptions = {}): AquacultureSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciAdaptation }; diff --git a/src/aquaculture_sci/aggregation.ts b/src/aquaculture_sci/aggregation.ts new file mode 100644 index 000000000..e97cd5576 --- /dev/null +++ b/src/aquaculture_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci aggregation module — tsb analytics library. */ +export interface AquacultureSciAggregationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciAggregationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciAggregation(data: number[], opts: AquacultureSciAggregationOptions = {}): AquacultureSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciAggregation }; diff --git a/src/aquaculture_sci/algebra.ts b/src/aquaculture_sci/algebra.ts new file mode 100644 index 000000000..54ac55092 --- /dev/null +++ b/src/aquaculture_sci/algebra.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci algebra module — tsb analytics library. */ +export interface AquacultureSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciAlgebraResult { values: number[]; converged: boolean; } +export function computeAquacultureSciAlgebra(data: number[], opts: AquacultureSciAlgebraOptions = {}): AquacultureSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciAlgebra }; diff --git a/src/aquaculture_sci/alignment.ts b/src/aquaculture_sci/alignment.ts new file mode 100644 index 000000000..efa2db909 --- /dev/null +++ b/src/aquaculture_sci/alignment.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci alignment module — tsb analytics library. */ +export interface AquacultureSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciAlignmentResult { values: number[]; converged: boolean; } +export function computeAquacultureSciAlignment(data: number[], opts: AquacultureSciAlignmentOptions = {}): AquacultureSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciAlignment }; diff --git a/src/aquaculture_sci/analysis.ts b/src/aquaculture_sci/analysis.ts new file mode 100644 index 000000000..b985f1aaa --- /dev/null +++ b/src/aquaculture_sci/analysis.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci analysis module — tsb analytics library. */ +export interface AquacultureSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciAnalysisResult { values: number[]; converged: boolean; } +export function computeAquacultureSciAnalysis(data: number[], opts: AquacultureSciAnalysisOptions = {}): AquacultureSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciAnalysis }; diff --git a/src/aquaculture_sci/augmentation.ts b/src/aquaculture_sci/augmentation.ts new file mode 100644 index 000000000..12fbafc39 --- /dev/null +++ b/src/aquaculture_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci augmentation module — tsb analytics library. */ +export interface AquacultureSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciAugmentationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciAugmentation(data: number[], opts: AquacultureSciAugmentationOptions = {}): AquacultureSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciAugmentation }; diff --git a/src/aquaculture_sci/bagging.ts b/src/aquaculture_sci/bagging.ts new file mode 100644 index 000000000..efad16fb0 --- /dev/null +++ b/src/aquaculture_sci/bagging.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci bagging module — tsb analytics library. */ +export interface AquacultureSciBaggingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciBaggingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciBagging(data: number[], opts: AquacultureSciBaggingOptions = {}): AquacultureSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciBagging }; diff --git a/src/aquaculture_sci/basis.ts b/src/aquaculture_sci/basis.ts new file mode 100644 index 000000000..2fb55ceea --- /dev/null +++ b/src/aquaculture_sci/basis.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci basis module — tsb analytics library. */ +export interface AquacultureSciBasisOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciBasisResult { values: number[]; converged: boolean; } +export function computeAquacultureSciBasis(data: number[], opts: AquacultureSciBasisOptions = {}): AquacultureSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciBasis }; diff --git a/src/aquaculture_sci/benchmarking.ts b/src/aquaculture_sci/benchmarking.ts new file mode 100644 index 000000000..054baac08 --- /dev/null +++ b/src/aquaculture_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci benchmarking module — tsb analytics library. */ +export interface AquacultureSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciBenchmarking(data: number[], opts: AquacultureSciBenchmarkingOptions = {}): AquacultureSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciBenchmarking }; diff --git a/src/aquaculture_sci/blending.ts b/src/aquaculture_sci/blending.ts new file mode 100644 index 000000000..14ff27286 --- /dev/null +++ b/src/aquaculture_sci/blending.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci blending module — tsb analytics library. */ +export interface AquacultureSciBlendingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciBlendingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciBlending(data: number[], opts: AquacultureSciBlendingOptions = {}): AquacultureSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciBlending }; diff --git a/src/aquaculture_sci/boosting.ts b/src/aquaculture_sci/boosting.ts new file mode 100644 index 000000000..597b4f6c7 --- /dev/null +++ b/src/aquaculture_sci/boosting.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci boosting module — tsb analytics library. */ +export interface AquacultureSciBoostingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciBoostingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciBoosting(data: number[], opts: AquacultureSciBoostingOptions = {}): AquacultureSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciBoosting }; diff --git a/src/aquaculture_sci/bootstrap.ts b/src/aquaculture_sci/bootstrap.ts new file mode 100644 index 000000000..9e7fb3d5c --- /dev/null +++ b/src/aquaculture_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci bootstrap module — tsb analytics library. */ +export interface AquacultureSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciBootstrapResult { values: number[]; converged: boolean; } +export function computeAquacultureSciBootstrap(data: number[], opts: AquacultureSciBootstrapOptions = {}): AquacultureSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciBootstrap }; diff --git a/src/aquaculture_sci/calculus.ts b/src/aquaculture_sci/calculus.ts new file mode 100644 index 000000000..9374effcb --- /dev/null +++ b/src/aquaculture_sci/calculus.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci calculus module — tsb analytics library. */ +export interface AquacultureSciCalculusOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCalculusResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCalculus(data: number[], opts: AquacultureSciCalculusOptions = {}): AquacultureSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCalculus }; diff --git a/src/aquaculture_sci/calibration.ts b/src/aquaculture_sci/calibration.ts new file mode 100644 index 000000000..24f411327 --- /dev/null +++ b/src/aquaculture_sci/calibration.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci calibration module — tsb analytics library. */ +export interface AquacultureSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCalibrationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCalibration(data: number[], opts: AquacultureSciCalibrationOptions = {}): AquacultureSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCalibration }; diff --git a/src/aquaculture_sci/characterization.ts b/src/aquaculture_sci/characterization.ts new file mode 100644 index 000000000..92536f86f --- /dev/null +++ b/src/aquaculture_sci/characterization.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci characterization module — tsb analytics library. */ +export interface AquacultureSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCharacterization(data: number[], opts: AquacultureSciCharacterizationOptions = {}): AquacultureSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCharacterization }; diff --git a/src/aquaculture_sci/classification.ts b/src/aquaculture_sci/classification.ts new file mode 100644 index 000000000..0d3768791 --- /dev/null +++ b/src/aquaculture_sci/classification.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci classification module — tsb analytics library. */ +export interface AquacultureSciClassificationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciClassificationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciClassification(data: number[], opts: AquacultureSciClassificationOptions = {}): AquacultureSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciClassification }; diff --git a/src/aquaculture_sci/clustering.ts b/src/aquaculture_sci/clustering.ts new file mode 100644 index 000000000..9f2f958b0 --- /dev/null +++ b/src/aquaculture_sci/clustering.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci clustering module — tsb analytics library. */ +export interface AquacultureSciClusteringOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciClusteringResult { values: number[]; converged: boolean; } +export function computeAquacultureSciClustering(data: number[], opts: AquacultureSciClusteringOptions = {}): AquacultureSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciClustering }; diff --git a/src/aquaculture_sci/compression.ts b/src/aquaculture_sci/compression.ts new file mode 100644 index 000000000..5d26743ad --- /dev/null +++ b/src/aquaculture_sci/compression.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci compression module — tsb analytics library. */ +export interface AquacultureSciCompressionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCompressionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCompression(data: number[], opts: AquacultureSciCompressionOptions = {}): AquacultureSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCompression }; diff --git a/src/aquaculture_sci/continuous.ts b/src/aquaculture_sci/continuous.ts new file mode 100644 index 000000000..56cffb746 --- /dev/null +++ b/src/aquaculture_sci/continuous.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci continuous module — tsb analytics library. */ +export interface AquacultureSciContinuousOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciContinuousResult { values: number[]; converged: boolean; } +export function computeAquacultureSciContinuous(data: number[], opts: AquacultureSciContinuousOptions = {}): AquacultureSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciContinuous }; diff --git a/src/aquaculture_sci/control.ts b/src/aquaculture_sci/control.ts new file mode 100644 index 000000000..c53bd821f --- /dev/null +++ b/src/aquaculture_sci/control.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci control module — tsb analytics library. */ +export interface AquacultureSciControlOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciControlResult { values: number[]; converged: boolean; } +export function computeAquacultureSciControl(data: number[], opts: AquacultureSciControlOptions = {}): AquacultureSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciControl }; diff --git a/src/aquaculture_sci/convergence.ts b/src/aquaculture_sci/convergence.ts new file mode 100644 index 000000000..e991783ca --- /dev/null +++ b/src/aquaculture_sci/convergence.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci convergence module — tsb analytics library. */ +export interface AquacultureSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciConvergenceResult { values: number[]; converged: boolean; } +export function computeAquacultureSciConvergence(data: number[], opts: AquacultureSciConvergenceOptions = {}): AquacultureSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciConvergence }; diff --git a/src/aquaculture_sci/convex.ts b/src/aquaculture_sci/convex.ts new file mode 100644 index 000000000..cd1121ad6 --- /dev/null +++ b/src/aquaculture_sci/convex.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci convex module — tsb analytics library. */ +export interface AquacultureSciConvexOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciConvexResult { values: number[]; converged: boolean; } +export function computeAquacultureSciConvex(data: number[], opts: AquacultureSciConvexOptions = {}): AquacultureSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciConvex }; diff --git a/src/aquaculture_sci/correlation.ts b/src/aquaculture_sci/correlation.ts new file mode 100644 index 000000000..8634ed4b3 --- /dev/null +++ b/src/aquaculture_sci/correlation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci correlation module — tsb analytics library. */ +export interface AquacultureSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCorrelationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCorrelation(data: number[], opts: AquacultureSciCorrelationOptions = {}): AquacultureSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCorrelation }; diff --git a/src/aquaculture_sci/covariance.ts b/src/aquaculture_sci/covariance.ts new file mode 100644 index 000000000..b04321d6c --- /dev/null +++ b/src/aquaculture_sci/covariance.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci covariance module — tsb analytics library. */ +export interface AquacultureSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCovarianceResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCovariance(data: number[], opts: AquacultureSciCovarianceOptions = {}): AquacultureSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCovariance }; diff --git a/src/aquaculture_sci/cross_validation.ts b/src/aquaculture_sci/cross_validation.ts new file mode 100644 index 000000000..d5d382070 --- /dev/null +++ b/src/aquaculture_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci cross_validation module — tsb analytics library. */ +export interface AquacultureSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciCrossValidation(data: number[], opts: AquacultureSciCrossValidationOptions = {}): AquacultureSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciCrossValidation }; diff --git a/src/aquaculture_sci/decoding.ts b/src/aquaculture_sci/decoding.ts new file mode 100644 index 000000000..52882bc8f --- /dev/null +++ b/src/aquaculture_sci/decoding.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci decoding module — tsb analytics library. */ +export interface AquacultureSciDecodingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDecodingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDecoding(data: number[], opts: AquacultureSciDecodingOptions = {}): AquacultureSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDecoding }; diff --git a/src/aquaculture_sci/decomposition.ts b/src/aquaculture_sci/decomposition.ts new file mode 100644 index 000000000..001e427d6 --- /dev/null +++ b/src/aquaculture_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci decomposition module — tsb analytics library. */ +export interface AquacultureSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDecompositionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDecomposition(data: number[], opts: AquacultureSciDecompositionOptions = {}): AquacultureSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDecomposition }; diff --git a/src/aquaculture_sci/detection.ts b/src/aquaculture_sci/detection.ts new file mode 100644 index 000000000..c0c2a2298 --- /dev/null +++ b/src/aquaculture_sci/detection.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci detection module — tsb analytics library. */ +export interface AquacultureSciDetectionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDetectionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDetection(data: number[], opts: AquacultureSciDetectionOptions = {}): AquacultureSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDetection }; diff --git a/src/aquaculture_sci/deterministic.ts b/src/aquaculture_sci/deterministic.ts new file mode 100644 index 000000000..360dc0680 --- /dev/null +++ b/src/aquaculture_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci deterministic module — tsb analytics library. */ +export interface AquacultureSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDeterministicResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDeterministic(data: number[], opts: AquacultureSciDeterministicOptions = {}): AquacultureSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDeterministic }; diff --git a/src/aquaculture_sci/diagnostics.ts b/src/aquaculture_sci/diagnostics.ts new file mode 100644 index 000000000..225aa88f6 --- /dev/null +++ b/src/aquaculture_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci diagnostics module — tsb analytics library. */ +export interface AquacultureSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDiagnostics(data: number[], opts: AquacultureSciDiagnosticsOptions = {}): AquacultureSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDiagnostics }; diff --git a/src/aquaculture_sci/differential.ts b/src/aquaculture_sci/differential.ts new file mode 100644 index 000000000..804d79163 --- /dev/null +++ b/src/aquaculture_sci/differential.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci differential module — tsb analytics library. */ +export interface AquacultureSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDifferentialResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDifferential(data: number[], opts: AquacultureSciDifferentialOptions = {}): AquacultureSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDifferential }; diff --git a/src/aquaculture_sci/discrete.ts b/src/aquaculture_sci/discrete.ts new file mode 100644 index 000000000..0568490d8 --- /dev/null +++ b/src/aquaculture_sci/discrete.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci discrete module — tsb analytics library. */ +export interface AquacultureSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDiscreteResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDiscrete(data: number[], opts: AquacultureSciDiscreteOptions = {}): AquacultureSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDiscrete }; diff --git a/src/aquaculture_sci/distribution.ts b/src/aquaculture_sci/distribution.ts new file mode 100644 index 000000000..cd63e6561 --- /dev/null +++ b/src/aquaculture_sci/distribution.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci distribution module — tsb analytics library. */ +export interface AquacultureSciDistributionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDistributionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDistribution(data: number[], opts: AquacultureSciDistributionOptions = {}): AquacultureSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDistribution }; diff --git a/src/aquaculture_sci/dynamic.ts b/src/aquaculture_sci/dynamic.ts new file mode 100644 index 000000000..9b946972b --- /dev/null +++ b/src/aquaculture_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci dynamic module — tsb analytics library. */ +export interface AquacultureSciDynamicOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciDynamicResult { values: number[]; converged: boolean; } +export function computeAquacultureSciDynamic(data: number[], opts: AquacultureSciDynamicOptions = {}): AquacultureSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciDynamic }; diff --git a/src/aquaculture_sci/embedding.ts b/src/aquaculture_sci/embedding.ts new file mode 100644 index 000000000..dc30893b0 --- /dev/null +++ b/src/aquaculture_sci/embedding.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci embedding module — tsb analytics library. */ +export interface AquacultureSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciEmbedding(data: number[], opts: AquacultureSciEmbeddingOptions = {}): AquacultureSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciEmbedding }; diff --git a/src/aquaculture_sci/encoding.ts b/src/aquaculture_sci/encoding.ts new file mode 100644 index 000000000..332125a8f --- /dev/null +++ b/src/aquaculture_sci/encoding.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci encoding module — tsb analytics library. */ +export interface AquacultureSciEncodingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciEncodingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciEncoding(data: number[], opts: AquacultureSciEncodingOptions = {}): AquacultureSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciEncoding }; diff --git a/src/aquaculture_sci/ensemble.ts b/src/aquaculture_sci/ensemble.ts new file mode 100644 index 000000000..54cd37022 --- /dev/null +++ b/src/aquaculture_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci ensemble module — tsb analytics library. */ +export interface AquacultureSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciEnsembleResult { values: number[]; converged: boolean; } +export function computeAquacultureSciEnsemble(data: number[], opts: AquacultureSciEnsembleOptions = {}): AquacultureSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciEnsemble }; diff --git a/src/aquaculture_sci/estimation.ts b/src/aquaculture_sci/estimation.ts new file mode 100644 index 000000000..d7653ac8c --- /dev/null +++ b/src/aquaculture_sci/estimation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci estimation module — tsb analytics library. */ +export interface AquacultureSciEstimationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciEstimationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciEstimation(data: number[], opts: AquacultureSciEstimationOptions = {}): AquacultureSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciEstimation }; diff --git a/src/aquaculture_sci/evaluation.ts b/src/aquaculture_sci/evaluation.ts new file mode 100644 index 000000000..79c01a025 --- /dev/null +++ b/src/aquaculture_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci evaluation module — tsb analytics library. */ +export interface AquacultureSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciEvaluationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciEvaluation(data: number[], opts: AquacultureSciEvaluationOptions = {}): AquacultureSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciEvaluation }; diff --git a/src/aquaculture_sci/extrapolation.ts b/src/aquaculture_sci/extrapolation.ts new file mode 100644 index 000000000..fdfecb7b8 --- /dev/null +++ b/src/aquaculture_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci extrapolation module — tsb analytics library. */ +export interface AquacultureSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciExtrapolation(data: number[], opts: AquacultureSciExtrapolationOptions = {}): AquacultureSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciExtrapolation }; diff --git a/src/aquaculture_sci/features.ts b/src/aquaculture_sci/features.ts new file mode 100644 index 000000000..99ce65de3 --- /dev/null +++ b/src/aquaculture_sci/features.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci features module — tsb analytics library. */ +export interface AquacultureSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciFeaturesResult { values: number[]; converged: boolean; } +export function computeAquacultureSciFeatures(data: number[], opts: AquacultureSciFeaturesOptions = {}): AquacultureSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciFeatures }; diff --git a/src/aquaculture_sci/feedback.ts b/src/aquaculture_sci/feedback.ts new file mode 100644 index 000000000..58bbb4476 --- /dev/null +++ b/src/aquaculture_sci/feedback.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci feedback module — tsb analytics library. */ +export interface AquacultureSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciFeedbackResult { values: number[]; converged: boolean; } +export function computeAquacultureSciFeedback(data: number[], opts: AquacultureSciFeedbackOptions = {}): AquacultureSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciFeedback }; diff --git a/src/aquaculture_sci/filtering.ts b/src/aquaculture_sci/filtering.ts new file mode 100644 index 000000000..e0f5555fb --- /dev/null +++ b/src/aquaculture_sci/filtering.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci filtering module — tsb analytics library. */ +export interface AquacultureSciFilteringOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciFilteringResult { values: number[]; converged: boolean; } +export function computeAquacultureSciFiltering(data: number[], opts: AquacultureSciFilteringOptions = {}): AquacultureSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciFiltering }; diff --git a/src/aquaculture_sci/fourier.ts b/src/aquaculture_sci/fourier.ts new file mode 100644 index 000000000..53437a81d --- /dev/null +++ b/src/aquaculture_sci/fourier.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci fourier module — tsb analytics library. */ +export interface AquacultureSciFourierOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciFourierResult { values: number[]; converged: boolean; } +export function computeAquacultureSciFourier(data: number[], opts: AquacultureSciFourierOptions = {}): AquacultureSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciFourier }; diff --git a/src/aquaculture_sci/fusion.ts b/src/aquaculture_sci/fusion.ts new file mode 100644 index 000000000..1a55dde50 --- /dev/null +++ b/src/aquaculture_sci/fusion.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci fusion module — tsb analytics library. */ +export interface AquacultureSciFusionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciFusionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciFusion(data: number[], opts: AquacultureSciFusionOptions = {}): AquacultureSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciFusion }; diff --git a/src/aquaculture_sci/generation.ts b/src/aquaculture_sci/generation.ts new file mode 100644 index 000000000..7075cbc4e --- /dev/null +++ b/src/aquaculture_sci/generation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci generation module — tsb analytics library. */ +export interface AquacultureSciGenerationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciGenerationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciGeneration(data: number[], opts: AquacultureSciGenerationOptions = {}): AquacultureSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciGeneration }; diff --git a/src/aquaculture_sci/geometry.ts b/src/aquaculture_sci/geometry.ts new file mode 100644 index 000000000..2d3b27443 --- /dev/null +++ b/src/aquaculture_sci/geometry.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci geometry module — tsb analytics library. */ +export interface AquacultureSciGeometryOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciGeometryResult { values: number[]; converged: boolean; } +export function computeAquacultureSciGeometry(data: number[], opts: AquacultureSciGeometryOptions = {}): AquacultureSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciGeometry }; diff --git a/src/aquaculture_sci/gradient.ts b/src/aquaculture_sci/gradient.ts new file mode 100644 index 000000000..604562e8d --- /dev/null +++ b/src/aquaculture_sci/gradient.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci gradient module — tsb analytics library. */ +export interface AquacultureSciGradientOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciGradientResult { values: number[]; converged: boolean; } +export function computeAquacultureSciGradient(data: number[], opts: AquacultureSciGradientOptions = {}): AquacultureSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciGradient }; diff --git a/src/aquaculture_sci/hessian.ts b/src/aquaculture_sci/hessian.ts new file mode 100644 index 000000000..e4a4062db --- /dev/null +++ b/src/aquaculture_sci/hessian.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci hessian module — tsb analytics library. */ +export interface AquacultureSciHessianOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciHessianResult { values: number[]; converged: boolean; } +export function computeAquacultureSciHessian(data: number[], opts: AquacultureSciHessianOptions = {}): AquacultureSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciHessian }; diff --git a/src/aquaculture_sci/hypothesis.ts b/src/aquaculture_sci/hypothesis.ts new file mode 100644 index 000000000..591075133 --- /dev/null +++ b/src/aquaculture_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci hypothesis module — tsb analytics library. */ +export interface AquacultureSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciHypothesisResult { values: number[]; converged: boolean; } +export function computeAquacultureSciHypothesis(data: number[], opts: AquacultureSciHypothesisOptions = {}): AquacultureSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciHypothesis }; diff --git a/src/aquaculture_sci/inference.ts b/src/aquaculture_sci/inference.ts new file mode 100644 index 000000000..eae4d2f3e --- /dev/null +++ b/src/aquaculture_sci/inference.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci inference module — tsb analytics library. */ +export interface AquacultureSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciInferenceResult { values: number[]; converged: boolean; } +export function computeAquacultureSciInference(data: number[], opts: AquacultureSciInferenceOptions = {}): AquacultureSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciInference }; diff --git a/src/aquaculture_sci/inference2.ts b/src/aquaculture_sci/inference2.ts new file mode 100644 index 000000000..040f5f6ed --- /dev/null +++ b/src/aquaculture_sci/inference2.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci inference2 module — tsb analytics library. */ +export interface AquacultureSciInferenceOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciInferenceResult { values: number[]; converged: boolean; } +export function computeAquacultureSciInference(data: number[], opts: AquacultureSciInferenceOptions = {}): AquacultureSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciInference }; diff --git a/src/aquaculture_sci/integral.ts b/src/aquaculture_sci/integral.ts new file mode 100644 index 000000000..8202ca8ba --- /dev/null +++ b/src/aquaculture_sci/integral.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci integral module — tsb analytics library. */ +export interface AquacultureSciIntegralOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciIntegralResult { values: number[]; converged: boolean; } +export function computeAquacultureSciIntegral(data: number[], opts: AquacultureSciIntegralOptions = {}): AquacultureSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciIntegral }; diff --git a/src/aquaculture_sci/integration.ts b/src/aquaculture_sci/integration.ts new file mode 100644 index 000000000..8bef8de67 --- /dev/null +++ b/src/aquaculture_sci/integration.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci integration module — tsb analytics library. */ +export interface AquacultureSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciIntegrationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciIntegration(data: number[], opts: AquacultureSciIntegrationOptions = {}): AquacultureSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciIntegration }; diff --git a/src/aquaculture_sci/interpolation.ts b/src/aquaculture_sci/interpolation.ts new file mode 100644 index 000000000..438a9f13e --- /dev/null +++ b/src/aquaculture_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci interpolation module — tsb analytics library. */ +export interface AquacultureSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciInterpolationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciInterpolation(data: number[], opts: AquacultureSciInterpolationOptions = {}): AquacultureSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciInterpolation }; diff --git a/src/aquaculture_sci/jacobian.ts b/src/aquaculture_sci/jacobian.ts new file mode 100644 index 000000000..33974b82c --- /dev/null +++ b/src/aquaculture_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci jacobian module — tsb analytics library. */ +export interface AquacultureSciJacobianOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciJacobianResult { values: number[]; converged: boolean; } +export function computeAquacultureSciJacobian(data: number[], opts: AquacultureSciJacobianOptions = {}): AquacultureSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciJacobian }; diff --git a/src/aquaculture_sci/kernel.ts b/src/aquaculture_sci/kernel.ts new file mode 100644 index 000000000..a6c6725ca --- /dev/null +++ b/src/aquaculture_sci/kernel.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci kernel module — tsb analytics library. */ +export interface AquacultureSciKernelOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciKernelResult { values: number[]; converged: boolean; } +export function computeAquacultureSciKernel(data: number[], opts: AquacultureSciKernelOptions = {}): AquacultureSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciKernel }; diff --git a/src/aquaculture_sci/laplacian.ts b/src/aquaculture_sci/laplacian.ts new file mode 100644 index 000000000..6574ac6b5 --- /dev/null +++ b/src/aquaculture_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci laplacian module — tsb analytics library. */ +export interface AquacultureSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciLaplacianResult { values: number[]; converged: boolean; } +export function computeAquacultureSciLaplacian(data: number[], opts: AquacultureSciLaplacianOptions = {}): AquacultureSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciLaplacian }; diff --git a/src/aquaculture_sci/learning.ts b/src/aquaculture_sci/learning.ts new file mode 100644 index 000000000..12d6f49f9 --- /dev/null +++ b/src/aquaculture_sci/learning.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci learning module — tsb analytics library. */ +export interface AquacultureSciLearningOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciLearningResult { values: number[]; converged: boolean; } +export function computeAquacultureSciLearning(data: number[], opts: AquacultureSciLearningOptions = {}): AquacultureSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciLearning }; diff --git a/src/aquaculture_sci/linear.ts b/src/aquaculture_sci/linear.ts new file mode 100644 index 000000000..fe0a4ee5f --- /dev/null +++ b/src/aquaculture_sci/linear.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci linear module — tsb analytics library. */ +export interface AquacultureSciLinearOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciLinearResult { values: number[]; converged: boolean; } +export function computeAquacultureSciLinear(data: number[], opts: AquacultureSciLinearOptions = {}): AquacultureSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciLinear }; diff --git a/src/aquaculture_sci/manifold.ts b/src/aquaculture_sci/manifold.ts new file mode 100644 index 000000000..4d4944a3b --- /dev/null +++ b/src/aquaculture_sci/manifold.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci manifold module — tsb analytics library. */ +export interface AquacultureSciManifoldOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciManifoldResult { values: number[]; converged: boolean; } +export function computeAquacultureSciManifold(data: number[], opts: AquacultureSciManifoldOptions = {}): AquacultureSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciManifold }; diff --git a/src/aquaculture_sci/matching.ts b/src/aquaculture_sci/matching.ts new file mode 100644 index 000000000..120eb6904 --- /dev/null +++ b/src/aquaculture_sci/matching.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci matching module — tsb analytics library. */ +export interface AquacultureSciMatchingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciMatchingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciMatching(data: number[], opts: AquacultureSciMatchingOptions = {}): AquacultureSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciMatching }; diff --git a/src/aquaculture_sci/measurement.ts b/src/aquaculture_sci/measurement.ts new file mode 100644 index 000000000..f5126e1ec --- /dev/null +++ b/src/aquaculture_sci/measurement.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci measurement module — tsb analytics library. */ +export interface AquacultureSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciMeasurementResult { values: number[]; converged: boolean; } +export function computeAquacultureSciMeasurement(data: number[], opts: AquacultureSciMeasurementOptions = {}): AquacultureSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciMeasurement }; diff --git a/src/aquaculture_sci/metrics.ts b/src/aquaculture_sci/metrics.ts new file mode 100644 index 000000000..da631863d --- /dev/null +++ b/src/aquaculture_sci/metrics.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci metrics module — tsb analytics library. */ +export interface AquacultureSciMetricsOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciMetricsResult { values: number[]; converged: boolean; } +export function computeAquacultureSciMetrics(data: number[], opts: AquacultureSciMetricsOptions = {}): AquacultureSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciMetrics }; diff --git a/src/aquaculture_sci/modeling.ts b/src/aquaculture_sci/modeling.ts new file mode 100644 index 000000000..1f05a0d3b --- /dev/null +++ b/src/aquaculture_sci/modeling.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci modeling module — tsb analytics library. */ +export interface AquacultureSciModelingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciModelingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciModeling(data: number[], opts: AquacultureSciModelingOptions = {}): AquacultureSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciModeling }; diff --git a/src/aquaculture_sci/monitoring.ts b/src/aquaculture_sci/monitoring.ts new file mode 100644 index 000000000..29aa71f1e --- /dev/null +++ b/src/aquaculture_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci monitoring module — tsb analytics library. */ +export interface AquacultureSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciMonitoringResult { values: number[]; converged: boolean; } +export function computeAquacultureSciMonitoring(data: number[], opts: AquacultureSciMonitoringOptions = {}): AquacultureSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciMonitoring }; diff --git a/src/aquaculture_sci/nonlinear.ts b/src/aquaculture_sci/nonlinear.ts new file mode 100644 index 000000000..d65b3ce22 --- /dev/null +++ b/src/aquaculture_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci nonlinear module — tsb analytics library. */ +export interface AquacultureSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciNonlinearResult { values: number[]; converged: boolean; } +export function computeAquacultureSciNonlinear(data: number[], opts: AquacultureSciNonlinearOptions = {}): AquacultureSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciNonlinear }; diff --git a/src/aquaculture_sci/normalization.ts b/src/aquaculture_sci/normalization.ts new file mode 100644 index 000000000..6eaa7b3db --- /dev/null +++ b/src/aquaculture_sci/normalization.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci normalization module — tsb analytics library. */ +export interface AquacultureSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciNormalizationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciNormalization(data: number[], opts: AquacultureSciNormalizationOptions = {}): AquacultureSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciNormalization }; diff --git a/src/aquaculture_sci/optimization.ts b/src/aquaculture_sci/optimization.ts new file mode 100644 index 000000000..eabd083a9 --- /dev/null +++ b/src/aquaculture_sci/optimization.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci optimization module — tsb analytics library. */ +export interface AquacultureSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciOptimizationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciOptimization(data: number[], opts: AquacultureSciOptimizationOptions = {}): AquacultureSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciOptimization }; diff --git a/src/aquaculture_sci/patterns.ts b/src/aquaculture_sci/patterns.ts new file mode 100644 index 000000000..3d09821ce --- /dev/null +++ b/src/aquaculture_sci/patterns.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci patterns module — tsb analytics library. */ +export interface AquacultureSciPatternsOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciPatternsResult { values: number[]; converged: boolean; } +export function computeAquacultureSciPatterns(data: number[], opts: AquacultureSciPatternsOptions = {}): AquacultureSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciPatterns }; diff --git a/src/aquaculture_sci/permutation.ts b/src/aquaculture_sci/permutation.ts new file mode 100644 index 000000000..c906f3af4 --- /dev/null +++ b/src/aquaculture_sci/permutation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci permutation module — tsb analytics library. */ +export interface AquacultureSciPermutationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciPermutationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciPermutation(data: number[], opts: AquacultureSciPermutationOptions = {}): AquacultureSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciPermutation }; diff --git a/src/aquaculture_sci/prediction.ts b/src/aquaculture_sci/prediction.ts new file mode 100644 index 000000000..72d38f54d --- /dev/null +++ b/src/aquaculture_sci/prediction.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci prediction module — tsb analytics library. */ +export interface AquacultureSciPredictionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciPredictionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciPrediction(data: number[], opts: AquacultureSciPredictionOptions = {}): AquacultureSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciPrediction }; diff --git a/src/aquaculture_sci/processing.ts b/src/aquaculture_sci/processing.ts new file mode 100644 index 000000000..31866befc --- /dev/null +++ b/src/aquaculture_sci/processing.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci processing module — tsb analytics library. */ +export interface AquacultureSciProcessingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciProcessingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciProcessing(data: number[], opts: AquacultureSciProcessingOptions = {}): AquacultureSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciProcessing }; diff --git a/src/aquaculture_sci/profiling.ts b/src/aquaculture_sci/profiling.ts new file mode 100644 index 000000000..fd4575e1c --- /dev/null +++ b/src/aquaculture_sci/profiling.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci profiling module — tsb analytics library. */ +export interface AquacultureSciProfilingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciProfilingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciProfiling(data: number[], opts: AquacultureSciProfilingOptions = {}): AquacultureSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciProfiling }; diff --git a/src/aquaculture_sci/projection.ts b/src/aquaculture_sci/projection.ts new file mode 100644 index 000000000..44ab11434 --- /dev/null +++ b/src/aquaculture_sci/projection.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci projection module — tsb analytics library. */ +export interface AquacultureSciProjectionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciProjectionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciProjection(data: number[], opts: AquacultureSciProjectionOptions = {}): AquacultureSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciProjection }; diff --git a/src/aquaculture_sci/ranking.ts b/src/aquaculture_sci/ranking.ts new file mode 100644 index 000000000..5a8dd2d30 --- /dev/null +++ b/src/aquaculture_sci/ranking.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci ranking module — tsb analytics library. */ +export interface AquacultureSciRankingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciRankingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciRanking(data: number[], opts: AquacultureSciRankingOptions = {}): AquacultureSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciRanking }; diff --git a/src/aquaculture_sci/reconstruction.ts b/src/aquaculture_sci/reconstruction.ts new file mode 100644 index 000000000..8e129a1cd --- /dev/null +++ b/src/aquaculture_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci reconstruction module — tsb analytics library. */ +export interface AquacultureSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciReconstructionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciReconstruction(data: number[], opts: AquacultureSciReconstructionOptions = {}): AquacultureSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciReconstruction }; diff --git a/src/aquaculture_sci/registration.ts b/src/aquaculture_sci/registration.ts new file mode 100644 index 000000000..5250ab6d2 --- /dev/null +++ b/src/aquaculture_sci/registration.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci registration module — tsb analytics library. */ +export interface AquacultureSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciRegistrationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciRegistration(data: number[], opts: AquacultureSciRegistrationOptions = {}): AquacultureSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciRegistration }; diff --git a/src/aquaculture_sci/regression.ts b/src/aquaculture_sci/regression.ts new file mode 100644 index 000000000..015918a04 --- /dev/null +++ b/src/aquaculture_sci/regression.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci regression module — tsb analytics library. */ +export interface AquacultureSciRegressionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciRegressionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciRegression(data: number[], opts: AquacultureSciRegressionOptions = {}): AquacultureSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciRegression }; diff --git a/src/aquaculture_sci/regularization.ts b/src/aquaculture_sci/regularization.ts new file mode 100644 index 000000000..f0f8f9b75 --- /dev/null +++ b/src/aquaculture_sci/regularization.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci regularization module — tsb analytics library. */ +export interface AquacultureSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciRegularizationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciRegularization(data: number[], opts: AquacultureSciRegularizationOptions = {}): AquacultureSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciRegularization }; diff --git a/src/aquaculture_sci/robustness.ts b/src/aquaculture_sci/robustness.ts new file mode 100644 index 000000000..177b6acf4 --- /dev/null +++ b/src/aquaculture_sci/robustness.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci robustness module — tsb analytics library. */ +export interface AquacultureSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciRobustnessResult { values: number[]; converged: boolean; } +export function computeAquacultureSciRobustness(data: number[], opts: AquacultureSciRobustnessOptions = {}): AquacultureSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciRobustness }; diff --git a/src/aquaculture_sci/sampling.ts b/src/aquaculture_sci/sampling.ts new file mode 100644 index 000000000..15609b96a --- /dev/null +++ b/src/aquaculture_sci/sampling.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci sampling module — tsb analytics library. */ +export interface AquacultureSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSamplingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSampling(data: number[], opts: AquacultureSciSamplingOptions = {}): AquacultureSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSampling }; diff --git a/src/aquaculture_sci/sampling2.ts b/src/aquaculture_sci/sampling2.ts new file mode 100644 index 000000000..08900aa73 --- /dev/null +++ b/src/aquaculture_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci sampling2 module — tsb analytics library. */ +export interface AquacultureSciSamplingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSamplingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSampling(data: number[], opts: AquacultureSciSamplingOptions = {}): AquacultureSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSampling }; diff --git a/src/aquaculture_sci/scaling.ts b/src/aquaculture_sci/scaling.ts new file mode 100644 index 000000000..84d59a57c --- /dev/null +++ b/src/aquaculture_sci/scaling.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci scaling module — tsb analytics library. */ +export interface AquacultureSciScalingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciScalingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciScaling(data: number[], opts: AquacultureSciScalingOptions = {}): AquacultureSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciScaling }; diff --git a/src/aquaculture_sci/scoring.ts b/src/aquaculture_sci/scoring.ts new file mode 100644 index 000000000..eb18d4107 --- /dev/null +++ b/src/aquaculture_sci/scoring.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci scoring module — tsb analytics library. */ +export interface AquacultureSciScoringOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciScoringResult { values: number[]; converged: boolean; } +export function computeAquacultureSciScoring(data: number[], opts: AquacultureSciScoringOptions = {}): AquacultureSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciScoring }; diff --git a/src/aquaculture_sci/segmentation.ts b/src/aquaculture_sci/segmentation.ts new file mode 100644 index 000000000..1fa72391f --- /dev/null +++ b/src/aquaculture_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci segmentation module — tsb analytics library. */ +export interface AquacultureSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSegmentationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSegmentation(data: number[], opts: AquacultureSciSegmentationOptions = {}): AquacultureSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSegmentation }; diff --git a/src/aquaculture_sci/selection.ts b/src/aquaculture_sci/selection.ts new file mode 100644 index 000000000..b9461ad62 --- /dev/null +++ b/src/aquaculture_sci/selection.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci selection module — tsb analytics library. */ +export interface AquacultureSciSelectionOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSelectionResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSelection(data: number[], opts: AquacultureSciSelectionOptions = {}): AquacultureSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSelection }; diff --git a/src/aquaculture_sci/sensitivity.ts b/src/aquaculture_sci/sensitivity.ts new file mode 100644 index 000000000..95fec66dd --- /dev/null +++ b/src/aquaculture_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci sensitivity module — tsb analytics library. */ +export interface AquacultureSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSensitivityResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSensitivity(data: number[], opts: AquacultureSciSensitivityOptions = {}): AquacultureSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSensitivity }; diff --git a/src/aquaculture_sci/simulation.ts b/src/aquaculture_sci/simulation.ts new file mode 100644 index 000000000..8e27a4f9d --- /dev/null +++ b/src/aquaculture_sci/simulation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci simulation module — tsb analytics library. */ +export interface AquacultureSciSimulationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSimulationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSimulation(data: number[], opts: AquacultureSciSimulationOptions = {}): AquacultureSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSimulation }; diff --git a/src/aquaculture_sci/smoothing.ts b/src/aquaculture_sci/smoothing.ts new file mode 100644 index 000000000..772b42001 --- /dev/null +++ b/src/aquaculture_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci smoothing module — tsb analytics library. */ +export interface AquacultureSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSmoothingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSmoothing(data: number[], opts: AquacultureSciSmoothingOptions = {}): AquacultureSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSmoothing }; diff --git a/src/aquaculture_sci/stability.ts b/src/aquaculture_sci/stability.ts new file mode 100644 index 000000000..77c93dd1d --- /dev/null +++ b/src/aquaculture_sci/stability.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci stability module — tsb analytics library. */ +export interface AquacultureSciStabilityOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciStabilityResult { values: number[]; converged: boolean; } +export function computeAquacultureSciStability(data: number[], opts: AquacultureSciStabilityOptions = {}): AquacultureSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciStability }; diff --git a/src/aquaculture_sci/stacking.ts b/src/aquaculture_sci/stacking.ts new file mode 100644 index 000000000..f93d4d530 --- /dev/null +++ b/src/aquaculture_sci/stacking.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci stacking module — tsb analytics library. */ +export interface AquacultureSciStackingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciStackingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciStacking(data: number[], opts: AquacultureSciStackingOptions = {}): AquacultureSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciStacking }; diff --git a/src/aquaculture_sci/standardization.ts b/src/aquaculture_sci/standardization.ts new file mode 100644 index 000000000..ccfdfcfed --- /dev/null +++ b/src/aquaculture_sci/standardization.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci standardization module — tsb analytics library. */ +export interface AquacultureSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciStandardizationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciStandardization(data: number[], opts: AquacultureSciStandardizationOptions = {}): AquacultureSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciStandardization }; diff --git a/src/aquaculture_sci/static.ts b/src/aquaculture_sci/static.ts new file mode 100644 index 000000000..2c33986da --- /dev/null +++ b/src/aquaculture_sci/static.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci static module — tsb analytics library. */ +export interface AquacultureSciStaticOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciStaticResult { values: number[]; converged: boolean; } +export function computeAquacultureSciStatic(data: number[], opts: AquacultureSciStaticOptions = {}): AquacultureSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciStatic }; diff --git a/src/aquaculture_sci/stochastic.ts b/src/aquaculture_sci/stochastic.ts new file mode 100644 index 000000000..a2d356786 --- /dev/null +++ b/src/aquaculture_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci stochastic module — tsb analytics library. */ +export interface AquacultureSciStochasticOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciStochasticResult { values: number[]; converged: boolean; } +export function computeAquacultureSciStochastic(data: number[], opts: AquacultureSciStochasticOptions = {}): AquacultureSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciStochastic }; diff --git a/src/aquaculture_sci/synthesis.ts b/src/aquaculture_sci/synthesis.ts new file mode 100644 index 000000000..2269eb4d1 --- /dev/null +++ b/src/aquaculture_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci synthesis module — tsb analytics library. */ +export interface AquacultureSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciSynthesisResult { values: number[]; converged: boolean; } +export function computeAquacultureSciSynthesis(data: number[], opts: AquacultureSciSynthesisOptions = {}): AquacultureSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciSynthesis }; diff --git a/src/aquaculture_sci/topology.ts b/src/aquaculture_sci/topology.ts new file mode 100644 index 000000000..fc836c5f9 --- /dev/null +++ b/src/aquaculture_sci/topology.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci topology module — tsb analytics library. */ +export interface AquacultureSciTopologyOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciTopologyResult { values: number[]; converged: boolean; } +export function computeAquacultureSciTopology(data: number[], opts: AquacultureSciTopologyOptions = {}): AquacultureSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciTopology }; diff --git a/src/aquaculture_sci/tracking.ts b/src/aquaculture_sci/tracking.ts new file mode 100644 index 000000000..00bb00045 --- /dev/null +++ b/src/aquaculture_sci/tracking.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci tracking module — tsb analytics library. */ +export interface AquacultureSciTrackingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciTrackingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciTracking(data: number[], opts: AquacultureSciTrackingOptions = {}): AquacultureSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciTracking }; diff --git a/src/aquaculture_sci/transform.ts b/src/aquaculture_sci/transform.ts new file mode 100644 index 000000000..4fa3cbd16 --- /dev/null +++ b/src/aquaculture_sci/transform.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci transform module — tsb analytics library. */ +export interface AquacultureSciTransformOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciTransformResult { values: number[]; converged: boolean; } +export function computeAquacultureSciTransform(data: number[], opts: AquacultureSciTransformOptions = {}): AquacultureSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciTransform }; diff --git a/src/aquaculture_sci/uncertainty.ts b/src/aquaculture_sci/uncertainty.ts new file mode 100644 index 000000000..dd278623d --- /dev/null +++ b/src/aquaculture_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci uncertainty module — tsb analytics library. */ +export interface AquacultureSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeAquacultureSciUncertainty(data: number[], opts: AquacultureSciUncertaintyOptions = {}): AquacultureSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciUncertainty }; diff --git a/src/aquaculture_sci/validation.ts b/src/aquaculture_sci/validation.ts new file mode 100644 index 000000000..a41365e93 --- /dev/null +++ b/src/aquaculture_sci/validation.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci validation module — tsb analytics library. */ +export interface AquacultureSciValidationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciValidationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciValidation(data: number[], opts: AquacultureSciValidationOptions = {}): AquacultureSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciValidation }; diff --git a/src/aquaculture_sci/verification.ts b/src/aquaculture_sci/verification.ts new file mode 100644 index 000000000..55cb4aab3 --- /dev/null +++ b/src/aquaculture_sci/verification.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci verification module — tsb analytics library. */ +export interface AquacultureSciVerificationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciVerificationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciVerification(data: number[], opts: AquacultureSciVerificationOptions = {}): AquacultureSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciVerification }; diff --git a/src/aquaculture_sci/visualization.ts b/src/aquaculture_sci/visualization.ts new file mode 100644 index 000000000..39e9293d7 --- /dev/null +++ b/src/aquaculture_sci/visualization.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci visualization module — tsb analytics library. */ +export interface AquacultureSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciVisualizationResult { values: number[]; converged: boolean; } +export function computeAquacultureSciVisualization(data: number[], opts: AquacultureSciVisualizationOptions = {}): AquacultureSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciVisualization }; diff --git a/src/aquaculture_sci/voting.ts b/src/aquaculture_sci/voting.ts new file mode 100644 index 000000000..6878faef9 --- /dev/null +++ b/src/aquaculture_sci/voting.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci voting module — tsb analytics library. */ +export interface AquacultureSciVotingOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciVotingResult { values: number[]; converged: boolean; } +export function computeAquacultureSciVoting(data: number[], opts: AquacultureSciVotingOptions = {}): AquacultureSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciVoting }; diff --git a/src/aquaculture_sci/wavelet.ts b/src/aquaculture_sci/wavelet.ts new file mode 100644 index 000000000..ee33845a1 --- /dev/null +++ b/src/aquaculture_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** aquaculture_sci wavelet module — tsb analytics library. */ +export interface AquacultureSciWaveletOptions { tol?: number; maxIter?: number; } +export interface AquacultureSciWaveletResult { values: number[]; converged: boolean; } +export function computeAquacultureSciWavelet(data: number[], opts: AquacultureSciWaveletOptions = {}): AquacultureSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAquacultureSciWavelet }; diff --git a/src/astrochemistry/adaptation.ts b/src/astrochemistry/adaptation.ts new file mode 100644 index 000000000..7f8f90131 --- /dev/null +++ b/src/astrochemistry/adaptation.ts @@ -0,0 +1,14 @@ +/** astrochemistry adaptation module — tsb analytics library. */ +export interface AstrochemistryAdaptationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryAdaptationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryAdaptation(data: number[], opts: AstrochemistryAdaptationOptions = {}): AstrochemistryAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryAdaptation }; diff --git a/src/astrochemistry/aggregation.ts b/src/astrochemistry/aggregation.ts new file mode 100644 index 000000000..ce009d457 --- /dev/null +++ b/src/astrochemistry/aggregation.ts @@ -0,0 +1,14 @@ +/** astrochemistry aggregation module — tsb analytics library. */ +export interface AstrochemistryAggregationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryAggregationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryAggregation(data: number[], opts: AstrochemistryAggregationOptions = {}): AstrochemistryAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryAggregation }; diff --git a/src/astrochemistry/algebra.ts b/src/astrochemistry/algebra.ts new file mode 100644 index 000000000..689ce6c14 --- /dev/null +++ b/src/astrochemistry/algebra.ts @@ -0,0 +1,14 @@ +/** astrochemistry algebra module — tsb analytics library. */ +export interface AstrochemistryAlgebraOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryAlgebraResult { values: number[]; converged: boolean; } +export function computeAstrochemistryAlgebra(data: number[], opts: AstrochemistryAlgebraOptions = {}): AstrochemistryAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryAlgebra }; diff --git a/src/astrochemistry/alignment.ts b/src/astrochemistry/alignment.ts new file mode 100644 index 000000000..edf6ca6fc --- /dev/null +++ b/src/astrochemistry/alignment.ts @@ -0,0 +1,14 @@ +/** astrochemistry alignment module — tsb analytics library. */ +export interface AstrochemistryAlignmentOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryAlignmentResult { values: number[]; converged: boolean; } +export function computeAstrochemistryAlignment(data: number[], opts: AstrochemistryAlignmentOptions = {}): AstrochemistryAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryAlignment }; diff --git a/src/astrochemistry/analysis.ts b/src/astrochemistry/analysis.ts new file mode 100644 index 000000000..9a3511e75 --- /dev/null +++ b/src/astrochemistry/analysis.ts @@ -0,0 +1,14 @@ +/** astrochemistry analysis module — tsb analytics library. */ +export interface AstrochemistryAnalysisOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryAnalysisResult { values: number[]; converged: boolean; } +export function computeAstrochemistryAnalysis(data: number[], opts: AstrochemistryAnalysisOptions = {}): AstrochemistryAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryAnalysis }; diff --git a/src/astrochemistry/augmentation.ts b/src/astrochemistry/augmentation.ts new file mode 100644 index 000000000..8e99fe0e9 --- /dev/null +++ b/src/astrochemistry/augmentation.ts @@ -0,0 +1,14 @@ +/** astrochemistry augmentation module — tsb analytics library. */ +export interface AstrochemistryAugmentationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryAugmentationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryAugmentation(data: number[], opts: AstrochemistryAugmentationOptions = {}): AstrochemistryAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryAugmentation }; diff --git a/src/astrochemistry/bagging.ts b/src/astrochemistry/bagging.ts new file mode 100644 index 000000000..e98fd4ff4 --- /dev/null +++ b/src/astrochemistry/bagging.ts @@ -0,0 +1,14 @@ +/** astrochemistry bagging module — tsb analytics library. */ +export interface AstrochemistryBaggingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryBaggingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryBagging(data: number[], opts: AstrochemistryBaggingOptions = {}): AstrochemistryBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryBagging }; diff --git a/src/astrochemistry/basis.ts b/src/astrochemistry/basis.ts new file mode 100644 index 000000000..0caeff9e0 --- /dev/null +++ b/src/astrochemistry/basis.ts @@ -0,0 +1,14 @@ +/** astrochemistry basis module — tsb analytics library. */ +export interface AstrochemistryBasisOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryBasisResult { values: number[]; converged: boolean; } +export function computeAstrochemistryBasis(data: number[], opts: AstrochemistryBasisOptions = {}): AstrochemistryBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryBasis }; diff --git a/src/astrochemistry/benchmarking.ts b/src/astrochemistry/benchmarking.ts new file mode 100644 index 000000000..0a2021d50 --- /dev/null +++ b/src/astrochemistry/benchmarking.ts @@ -0,0 +1,14 @@ +/** astrochemistry benchmarking module — tsb analytics library. */ +export interface AstrochemistryBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryBenchmarkingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryBenchmarking(data: number[], opts: AstrochemistryBenchmarkingOptions = {}): AstrochemistryBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryBenchmarking }; diff --git a/src/astrochemistry/blending.ts b/src/astrochemistry/blending.ts new file mode 100644 index 000000000..d6d0fd525 --- /dev/null +++ b/src/astrochemistry/blending.ts @@ -0,0 +1,14 @@ +/** astrochemistry blending module — tsb analytics library. */ +export interface AstrochemistryBlendingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryBlendingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryBlending(data: number[], opts: AstrochemistryBlendingOptions = {}): AstrochemistryBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryBlending }; diff --git a/src/astrochemistry/boosting.ts b/src/astrochemistry/boosting.ts new file mode 100644 index 000000000..f32b14042 --- /dev/null +++ b/src/astrochemistry/boosting.ts @@ -0,0 +1,14 @@ +/** astrochemistry boosting module — tsb analytics library. */ +export interface AstrochemistryBoostingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryBoostingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryBoosting(data: number[], opts: AstrochemistryBoostingOptions = {}): AstrochemistryBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryBoosting }; diff --git a/src/astrochemistry/bootstrap.ts b/src/astrochemistry/bootstrap.ts new file mode 100644 index 000000000..83a859251 --- /dev/null +++ b/src/astrochemistry/bootstrap.ts @@ -0,0 +1,14 @@ +/** astrochemistry bootstrap module — tsb analytics library. */ +export interface AstrochemistryBootstrapOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryBootstrapResult { values: number[]; converged: boolean; } +export function computeAstrochemistryBootstrap(data: number[], opts: AstrochemistryBootstrapOptions = {}): AstrochemistryBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryBootstrap }; diff --git a/src/astrochemistry/calculus.ts b/src/astrochemistry/calculus.ts new file mode 100644 index 000000000..cb8e7203c --- /dev/null +++ b/src/astrochemistry/calculus.ts @@ -0,0 +1,14 @@ +/** astrochemistry calculus module — tsb analytics library. */ +export interface AstrochemistryCalculusOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCalculusResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCalculus(data: number[], opts: AstrochemistryCalculusOptions = {}): AstrochemistryCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCalculus }; diff --git a/src/astrochemistry/calibration.ts b/src/astrochemistry/calibration.ts new file mode 100644 index 000000000..c249cecc7 --- /dev/null +++ b/src/astrochemistry/calibration.ts @@ -0,0 +1,14 @@ +/** astrochemistry calibration module — tsb analytics library. */ +export interface AstrochemistryCalibrationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCalibrationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCalibration(data: number[], opts: AstrochemistryCalibrationOptions = {}): AstrochemistryCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCalibration }; diff --git a/src/astrochemistry/characterization.ts b/src/astrochemistry/characterization.ts new file mode 100644 index 000000000..486b75f01 --- /dev/null +++ b/src/astrochemistry/characterization.ts @@ -0,0 +1,14 @@ +/** astrochemistry characterization module — tsb analytics library. */ +export interface AstrochemistryCharacterizationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCharacterizationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCharacterization(data: number[], opts: AstrochemistryCharacterizationOptions = {}): AstrochemistryCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCharacterization }; diff --git a/src/astrochemistry/classification.ts b/src/astrochemistry/classification.ts new file mode 100644 index 000000000..f7ee6abb7 --- /dev/null +++ b/src/astrochemistry/classification.ts @@ -0,0 +1,14 @@ +/** astrochemistry classification module — tsb analytics library. */ +export interface AstrochemistryClassificationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryClassificationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryClassification(data: number[], opts: AstrochemistryClassificationOptions = {}): AstrochemistryClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryClassification }; diff --git a/src/astrochemistry/clustering.ts b/src/astrochemistry/clustering.ts new file mode 100644 index 000000000..c60c86b4c --- /dev/null +++ b/src/astrochemistry/clustering.ts @@ -0,0 +1,14 @@ +/** astrochemistry clustering module — tsb analytics library. */ +export interface AstrochemistryClusteringOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryClusteringResult { values: number[]; converged: boolean; } +export function computeAstrochemistryClustering(data: number[], opts: AstrochemistryClusteringOptions = {}): AstrochemistryClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryClustering }; diff --git a/src/astrochemistry/compression.ts b/src/astrochemistry/compression.ts new file mode 100644 index 000000000..05473fc6d --- /dev/null +++ b/src/astrochemistry/compression.ts @@ -0,0 +1,14 @@ +/** astrochemistry compression module — tsb analytics library. */ +export interface AstrochemistryCompressionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCompressionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCompression(data: number[], opts: AstrochemistryCompressionOptions = {}): AstrochemistryCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCompression }; diff --git a/src/astrochemistry/continuous.ts b/src/astrochemistry/continuous.ts new file mode 100644 index 000000000..22c030da6 --- /dev/null +++ b/src/astrochemistry/continuous.ts @@ -0,0 +1,14 @@ +/** astrochemistry continuous module — tsb analytics library. */ +export interface AstrochemistryContinuousOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryContinuousResult { values: number[]; converged: boolean; } +export function computeAstrochemistryContinuous(data: number[], opts: AstrochemistryContinuousOptions = {}): AstrochemistryContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryContinuous }; diff --git a/src/astrochemistry/control.ts b/src/astrochemistry/control.ts new file mode 100644 index 000000000..302a0ad57 --- /dev/null +++ b/src/astrochemistry/control.ts @@ -0,0 +1,14 @@ +/** astrochemistry control module — tsb analytics library. */ +export interface AstrochemistryControlOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryControlResult { values: number[]; converged: boolean; } +export function computeAstrochemistryControl(data: number[], opts: AstrochemistryControlOptions = {}): AstrochemistryControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryControl }; diff --git a/src/astrochemistry/convergence.ts b/src/astrochemistry/convergence.ts new file mode 100644 index 000000000..922b18750 --- /dev/null +++ b/src/astrochemistry/convergence.ts @@ -0,0 +1,14 @@ +/** astrochemistry convergence module — tsb analytics library. */ +export interface AstrochemistryConvergenceOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryConvergenceResult { values: number[]; converged: boolean; } +export function computeAstrochemistryConvergence(data: number[], opts: AstrochemistryConvergenceOptions = {}): AstrochemistryConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryConvergence }; diff --git a/src/astrochemistry/convex.ts b/src/astrochemistry/convex.ts new file mode 100644 index 000000000..b639b14a1 --- /dev/null +++ b/src/astrochemistry/convex.ts @@ -0,0 +1,14 @@ +/** astrochemistry convex module — tsb analytics library. */ +export interface AstrochemistryConvexOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryConvexResult { values: number[]; converged: boolean; } +export function computeAstrochemistryConvex(data: number[], opts: AstrochemistryConvexOptions = {}): AstrochemistryConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryConvex }; diff --git a/src/astrochemistry/correlation.ts b/src/astrochemistry/correlation.ts new file mode 100644 index 000000000..fdc039ad4 --- /dev/null +++ b/src/astrochemistry/correlation.ts @@ -0,0 +1,14 @@ +/** astrochemistry correlation module — tsb analytics library. */ +export interface AstrochemistryCorrelationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCorrelationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCorrelation(data: number[], opts: AstrochemistryCorrelationOptions = {}): AstrochemistryCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCorrelation }; diff --git a/src/astrochemistry/covariance.ts b/src/astrochemistry/covariance.ts new file mode 100644 index 000000000..c05e68852 --- /dev/null +++ b/src/astrochemistry/covariance.ts @@ -0,0 +1,14 @@ +/** astrochemistry covariance module — tsb analytics library. */ +export interface AstrochemistryCovarianceOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCovarianceResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCovariance(data: number[], opts: AstrochemistryCovarianceOptions = {}): AstrochemistryCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCovariance }; diff --git a/src/astrochemistry/cross_validation.ts b/src/astrochemistry/cross_validation.ts new file mode 100644 index 000000000..48660d5c3 --- /dev/null +++ b/src/astrochemistry/cross_validation.ts @@ -0,0 +1,14 @@ +/** astrochemistry cross_validation module — tsb analytics library. */ +export interface AstrochemistryCrossValidationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryCrossValidationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryCrossValidation(data: number[], opts: AstrochemistryCrossValidationOptions = {}): AstrochemistryCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryCrossValidation }; diff --git a/src/astrochemistry/decoding.ts b/src/astrochemistry/decoding.ts new file mode 100644 index 000000000..c8c8d62d6 --- /dev/null +++ b/src/astrochemistry/decoding.ts @@ -0,0 +1,14 @@ +/** astrochemistry decoding module — tsb analytics library. */ +export interface AstrochemistryDecodingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDecodingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDecoding(data: number[], opts: AstrochemistryDecodingOptions = {}): AstrochemistryDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDecoding }; diff --git a/src/astrochemistry/decomposition.ts b/src/astrochemistry/decomposition.ts new file mode 100644 index 000000000..788e51680 --- /dev/null +++ b/src/astrochemistry/decomposition.ts @@ -0,0 +1,14 @@ +/** astrochemistry decomposition module — tsb analytics library. */ +export interface AstrochemistryDecompositionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDecompositionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDecomposition(data: number[], opts: AstrochemistryDecompositionOptions = {}): AstrochemistryDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDecomposition }; diff --git a/src/astrochemistry/detection.ts b/src/astrochemistry/detection.ts new file mode 100644 index 000000000..c0bbba1e4 --- /dev/null +++ b/src/astrochemistry/detection.ts @@ -0,0 +1,14 @@ +/** astrochemistry detection module — tsb analytics library. */ +export interface AstrochemistryDetectionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDetectionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDetection(data: number[], opts: AstrochemistryDetectionOptions = {}): AstrochemistryDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDetection }; diff --git a/src/astrochemistry/deterministic.ts b/src/astrochemistry/deterministic.ts new file mode 100644 index 000000000..973c691f8 --- /dev/null +++ b/src/astrochemistry/deterministic.ts @@ -0,0 +1,14 @@ +/** astrochemistry deterministic module — tsb analytics library. */ +export interface AstrochemistryDeterministicOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDeterministicResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDeterministic(data: number[], opts: AstrochemistryDeterministicOptions = {}): AstrochemistryDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDeterministic }; diff --git a/src/astrochemistry/diagnostics.ts b/src/astrochemistry/diagnostics.ts new file mode 100644 index 000000000..f96436283 --- /dev/null +++ b/src/astrochemistry/diagnostics.ts @@ -0,0 +1,14 @@ +/** astrochemistry diagnostics module — tsb analytics library. */ +export interface AstrochemistryDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDiagnosticsResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDiagnostics(data: number[], opts: AstrochemistryDiagnosticsOptions = {}): AstrochemistryDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDiagnostics }; diff --git a/src/astrochemistry/differential.ts b/src/astrochemistry/differential.ts new file mode 100644 index 000000000..931ac657e --- /dev/null +++ b/src/astrochemistry/differential.ts @@ -0,0 +1,14 @@ +/** astrochemistry differential module — tsb analytics library. */ +export interface AstrochemistryDifferentialOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDifferentialResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDifferential(data: number[], opts: AstrochemistryDifferentialOptions = {}): AstrochemistryDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDifferential }; diff --git a/src/astrochemistry/discrete.ts b/src/astrochemistry/discrete.ts new file mode 100644 index 000000000..452ae077f --- /dev/null +++ b/src/astrochemistry/discrete.ts @@ -0,0 +1,14 @@ +/** astrochemistry discrete module — tsb analytics library. */ +export interface AstrochemistryDiscreteOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDiscreteResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDiscrete(data: number[], opts: AstrochemistryDiscreteOptions = {}): AstrochemistryDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDiscrete }; diff --git a/src/astrochemistry/distribution.ts b/src/astrochemistry/distribution.ts new file mode 100644 index 000000000..afd513be9 --- /dev/null +++ b/src/astrochemistry/distribution.ts @@ -0,0 +1,14 @@ +/** astrochemistry distribution module — tsb analytics library. */ +export interface AstrochemistryDistributionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDistributionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDistribution(data: number[], opts: AstrochemistryDistributionOptions = {}): AstrochemistryDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDistribution }; diff --git a/src/astrochemistry/dynamic.ts b/src/astrochemistry/dynamic.ts new file mode 100644 index 000000000..e95d11e12 --- /dev/null +++ b/src/astrochemistry/dynamic.ts @@ -0,0 +1,14 @@ +/** astrochemistry dynamic module — tsb analytics library. */ +export interface AstrochemistryDynamicOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryDynamicResult { values: number[]; converged: boolean; } +export function computeAstrochemistryDynamic(data: number[], opts: AstrochemistryDynamicOptions = {}): AstrochemistryDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryDynamic }; diff --git a/src/astrochemistry/embedding.ts b/src/astrochemistry/embedding.ts new file mode 100644 index 000000000..b8506f2f7 --- /dev/null +++ b/src/astrochemistry/embedding.ts @@ -0,0 +1,14 @@ +/** astrochemistry embedding module — tsb analytics library. */ +export interface AstrochemistryEmbeddingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryEmbeddingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryEmbedding(data: number[], opts: AstrochemistryEmbeddingOptions = {}): AstrochemistryEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryEmbedding }; diff --git a/src/astrochemistry/encoding.ts b/src/astrochemistry/encoding.ts new file mode 100644 index 000000000..1b6cc8074 --- /dev/null +++ b/src/astrochemistry/encoding.ts @@ -0,0 +1,14 @@ +/** astrochemistry encoding module — tsb analytics library. */ +export interface AstrochemistryEncodingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryEncodingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryEncoding(data: number[], opts: AstrochemistryEncodingOptions = {}): AstrochemistryEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryEncoding }; diff --git a/src/astrochemistry/ensemble.ts b/src/astrochemistry/ensemble.ts new file mode 100644 index 000000000..35169be21 --- /dev/null +++ b/src/astrochemistry/ensemble.ts @@ -0,0 +1,14 @@ +/** astrochemistry ensemble module — tsb analytics library. */ +export interface AstrochemistryEnsembleOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryEnsembleResult { values: number[]; converged: boolean; } +export function computeAstrochemistryEnsemble(data: number[], opts: AstrochemistryEnsembleOptions = {}): AstrochemistryEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryEnsemble }; diff --git a/src/astrochemistry/estimation.ts b/src/astrochemistry/estimation.ts new file mode 100644 index 000000000..582a810b0 --- /dev/null +++ b/src/astrochemistry/estimation.ts @@ -0,0 +1,14 @@ +/** astrochemistry estimation module — tsb analytics library. */ +export interface AstrochemistryEstimationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryEstimationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryEstimation(data: number[], opts: AstrochemistryEstimationOptions = {}): AstrochemistryEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryEstimation }; diff --git a/src/astrochemistry/evaluation.ts b/src/astrochemistry/evaluation.ts new file mode 100644 index 000000000..e17d711dd --- /dev/null +++ b/src/astrochemistry/evaluation.ts @@ -0,0 +1,14 @@ +/** astrochemistry evaluation module — tsb analytics library. */ +export interface AstrochemistryEvaluationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryEvaluationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryEvaluation(data: number[], opts: AstrochemistryEvaluationOptions = {}): AstrochemistryEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryEvaluation }; diff --git a/src/astrochemistry/extrapolation.ts b/src/astrochemistry/extrapolation.ts new file mode 100644 index 000000000..bc2279bb3 --- /dev/null +++ b/src/astrochemistry/extrapolation.ts @@ -0,0 +1,14 @@ +/** astrochemistry extrapolation module — tsb analytics library. */ +export interface AstrochemistryExtrapolationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryExtrapolationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryExtrapolation(data: number[], opts: AstrochemistryExtrapolationOptions = {}): AstrochemistryExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryExtrapolation }; diff --git a/src/astrochemistry/features.ts b/src/astrochemistry/features.ts new file mode 100644 index 000000000..04e20c055 --- /dev/null +++ b/src/astrochemistry/features.ts @@ -0,0 +1,14 @@ +/** astrochemistry features module — tsb analytics library. */ +export interface AstrochemistryFeaturesOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryFeaturesResult { values: number[]; converged: boolean; } +export function computeAstrochemistryFeatures(data: number[], opts: AstrochemistryFeaturesOptions = {}): AstrochemistryFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryFeatures }; diff --git a/src/astrochemistry/feedback.ts b/src/astrochemistry/feedback.ts new file mode 100644 index 000000000..ff21fac69 --- /dev/null +++ b/src/astrochemistry/feedback.ts @@ -0,0 +1,14 @@ +/** astrochemistry feedback module — tsb analytics library. */ +export interface AstrochemistryFeedbackOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryFeedbackResult { values: number[]; converged: boolean; } +export function computeAstrochemistryFeedback(data: number[], opts: AstrochemistryFeedbackOptions = {}): AstrochemistryFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryFeedback }; diff --git a/src/astrochemistry/filtering.ts b/src/astrochemistry/filtering.ts new file mode 100644 index 000000000..7fb5f9053 --- /dev/null +++ b/src/astrochemistry/filtering.ts @@ -0,0 +1,14 @@ +/** astrochemistry filtering module — tsb analytics library. */ +export interface AstrochemistryFilteringOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryFilteringResult { values: number[]; converged: boolean; } +export function computeAstrochemistryFiltering(data: number[], opts: AstrochemistryFilteringOptions = {}): AstrochemistryFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryFiltering }; diff --git a/src/astrochemistry/fourier.ts b/src/astrochemistry/fourier.ts new file mode 100644 index 000000000..ed77ac0de --- /dev/null +++ b/src/astrochemistry/fourier.ts @@ -0,0 +1,14 @@ +/** astrochemistry fourier module — tsb analytics library. */ +export interface AstrochemistryFourierOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryFourierResult { values: number[]; converged: boolean; } +export function computeAstrochemistryFourier(data: number[], opts: AstrochemistryFourierOptions = {}): AstrochemistryFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryFourier }; diff --git a/src/astrochemistry/fusion.ts b/src/astrochemistry/fusion.ts new file mode 100644 index 000000000..a057e25d9 --- /dev/null +++ b/src/astrochemistry/fusion.ts @@ -0,0 +1,14 @@ +/** astrochemistry fusion module — tsb analytics library. */ +export interface AstrochemistryFusionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryFusionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryFusion(data: number[], opts: AstrochemistryFusionOptions = {}): AstrochemistryFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryFusion }; diff --git a/src/astrochemistry/generation.ts b/src/astrochemistry/generation.ts new file mode 100644 index 000000000..d921d29c1 --- /dev/null +++ b/src/astrochemistry/generation.ts @@ -0,0 +1,14 @@ +/** astrochemistry generation module — tsb analytics library. */ +export interface AstrochemistryGenerationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryGenerationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryGeneration(data: number[], opts: AstrochemistryGenerationOptions = {}): AstrochemistryGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryGeneration }; diff --git a/src/astrochemistry/geometry.ts b/src/astrochemistry/geometry.ts new file mode 100644 index 000000000..d9303a082 --- /dev/null +++ b/src/astrochemistry/geometry.ts @@ -0,0 +1,14 @@ +/** astrochemistry geometry module — tsb analytics library. */ +export interface AstrochemistryGeometryOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryGeometryResult { values: number[]; converged: boolean; } +export function computeAstrochemistryGeometry(data: number[], opts: AstrochemistryGeometryOptions = {}): AstrochemistryGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryGeometry }; diff --git a/src/astrochemistry/gradient.ts b/src/astrochemistry/gradient.ts new file mode 100644 index 000000000..d0cbff476 --- /dev/null +++ b/src/astrochemistry/gradient.ts @@ -0,0 +1,14 @@ +/** astrochemistry gradient module — tsb analytics library. */ +export interface AstrochemistryGradientOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryGradientResult { values: number[]; converged: boolean; } +export function computeAstrochemistryGradient(data: number[], opts: AstrochemistryGradientOptions = {}): AstrochemistryGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryGradient }; diff --git a/src/astrochemistry/hessian.ts b/src/astrochemistry/hessian.ts new file mode 100644 index 000000000..b17e8911d --- /dev/null +++ b/src/astrochemistry/hessian.ts @@ -0,0 +1,14 @@ +/** astrochemistry hessian module — tsb analytics library. */ +export interface AstrochemistryHessianOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryHessianResult { values: number[]; converged: boolean; } +export function computeAstrochemistryHessian(data: number[], opts: AstrochemistryHessianOptions = {}): AstrochemistryHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryHessian }; diff --git a/src/astrochemistry/hypothesis.ts b/src/astrochemistry/hypothesis.ts new file mode 100644 index 000000000..e06daf9ee --- /dev/null +++ b/src/astrochemistry/hypothesis.ts @@ -0,0 +1,14 @@ +/** astrochemistry hypothesis module — tsb analytics library. */ +export interface AstrochemistryHypothesisOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryHypothesisResult { values: number[]; converged: boolean; } +export function computeAstrochemistryHypothesis(data: number[], opts: AstrochemistryHypothesisOptions = {}): AstrochemistryHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryHypothesis }; diff --git a/src/astrochemistry/inference.ts b/src/astrochemistry/inference.ts new file mode 100644 index 000000000..1497834ba --- /dev/null +++ b/src/astrochemistry/inference.ts @@ -0,0 +1,14 @@ +/** astrochemistry inference module — tsb analytics library. */ +export interface AstrochemistryInferenceOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryInferenceResult { values: number[]; converged: boolean; } +export function computeAstrochemistryInference(data: number[], opts: AstrochemistryInferenceOptions = {}): AstrochemistryInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryInference }; diff --git a/src/astrochemistry/inference2.ts b/src/astrochemistry/inference2.ts new file mode 100644 index 000000000..672dfbf47 --- /dev/null +++ b/src/astrochemistry/inference2.ts @@ -0,0 +1,14 @@ +/** astrochemistry inference2 module — tsb analytics library. */ +export interface AstrochemistryInferenceOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryInferenceResult { values: number[]; converged: boolean; } +export function computeAstrochemistryInference(data: number[], opts: AstrochemistryInferenceOptions = {}): AstrochemistryInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryInference }; diff --git a/src/astrochemistry/integral.ts b/src/astrochemistry/integral.ts new file mode 100644 index 000000000..b9cea4191 --- /dev/null +++ b/src/astrochemistry/integral.ts @@ -0,0 +1,14 @@ +/** astrochemistry integral module — tsb analytics library. */ +export interface AstrochemistryIntegralOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryIntegralResult { values: number[]; converged: boolean; } +export function computeAstrochemistryIntegral(data: number[], opts: AstrochemistryIntegralOptions = {}): AstrochemistryIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryIntegral }; diff --git a/src/astrochemistry/integration.ts b/src/astrochemistry/integration.ts new file mode 100644 index 000000000..641cbe8b2 --- /dev/null +++ b/src/astrochemistry/integration.ts @@ -0,0 +1,14 @@ +/** astrochemistry integration module — tsb analytics library. */ +export interface AstrochemistryIntegrationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryIntegrationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryIntegration(data: number[], opts: AstrochemistryIntegrationOptions = {}): AstrochemistryIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryIntegration }; diff --git a/src/astrochemistry/interpolation.ts b/src/astrochemistry/interpolation.ts new file mode 100644 index 000000000..989d0edb4 --- /dev/null +++ b/src/astrochemistry/interpolation.ts @@ -0,0 +1,14 @@ +/** astrochemistry interpolation module — tsb analytics library. */ +export interface AstrochemistryInterpolationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryInterpolationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryInterpolation(data: number[], opts: AstrochemistryInterpolationOptions = {}): AstrochemistryInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryInterpolation }; diff --git a/src/astrochemistry/jacobian.ts b/src/astrochemistry/jacobian.ts new file mode 100644 index 000000000..87eb9b7c4 --- /dev/null +++ b/src/astrochemistry/jacobian.ts @@ -0,0 +1,14 @@ +/** astrochemistry jacobian module — tsb analytics library. */ +export interface AstrochemistryJacobianOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryJacobianResult { values: number[]; converged: boolean; } +export function computeAstrochemistryJacobian(data: number[], opts: AstrochemistryJacobianOptions = {}): AstrochemistryJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryJacobian }; diff --git a/src/astrochemistry/kernel.ts b/src/astrochemistry/kernel.ts new file mode 100644 index 000000000..6f4750be4 --- /dev/null +++ b/src/astrochemistry/kernel.ts @@ -0,0 +1,14 @@ +/** astrochemistry kernel module — tsb analytics library. */ +export interface AstrochemistryKernelOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryKernelResult { values: number[]; converged: boolean; } +export function computeAstrochemistryKernel(data: number[], opts: AstrochemistryKernelOptions = {}): AstrochemistryKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryKernel }; diff --git a/src/astrochemistry/laplacian.ts b/src/astrochemistry/laplacian.ts new file mode 100644 index 000000000..351b49534 --- /dev/null +++ b/src/astrochemistry/laplacian.ts @@ -0,0 +1,14 @@ +/** astrochemistry laplacian module — tsb analytics library. */ +export interface AstrochemistryLaplacianOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryLaplacianResult { values: number[]; converged: boolean; } +export function computeAstrochemistryLaplacian(data: number[], opts: AstrochemistryLaplacianOptions = {}): AstrochemistryLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryLaplacian }; diff --git a/src/astrochemistry/learning.ts b/src/astrochemistry/learning.ts new file mode 100644 index 000000000..56d8dde88 --- /dev/null +++ b/src/astrochemistry/learning.ts @@ -0,0 +1,14 @@ +/** astrochemistry learning module — tsb analytics library. */ +export interface AstrochemistryLearningOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryLearningResult { values: number[]; converged: boolean; } +export function computeAstrochemistryLearning(data: number[], opts: AstrochemistryLearningOptions = {}): AstrochemistryLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryLearning }; diff --git a/src/astrochemistry/linear.ts b/src/astrochemistry/linear.ts new file mode 100644 index 000000000..0a3b496bb --- /dev/null +++ b/src/astrochemistry/linear.ts @@ -0,0 +1,14 @@ +/** astrochemistry linear module — tsb analytics library. */ +export interface AstrochemistryLinearOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryLinearResult { values: number[]; converged: boolean; } +export function computeAstrochemistryLinear(data: number[], opts: AstrochemistryLinearOptions = {}): AstrochemistryLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryLinear }; diff --git a/src/astrochemistry/manifold.ts b/src/astrochemistry/manifold.ts new file mode 100644 index 000000000..0196e669e --- /dev/null +++ b/src/astrochemistry/manifold.ts @@ -0,0 +1,14 @@ +/** astrochemistry manifold module — tsb analytics library. */ +export interface AstrochemistryManifoldOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryManifoldResult { values: number[]; converged: boolean; } +export function computeAstrochemistryManifold(data: number[], opts: AstrochemistryManifoldOptions = {}): AstrochemistryManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryManifold }; diff --git a/src/astrochemistry/matching.ts b/src/astrochemistry/matching.ts new file mode 100644 index 000000000..31efad2a5 --- /dev/null +++ b/src/astrochemistry/matching.ts @@ -0,0 +1,14 @@ +/** astrochemistry matching module — tsb analytics library. */ +export interface AstrochemistryMatchingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryMatchingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryMatching(data: number[], opts: AstrochemistryMatchingOptions = {}): AstrochemistryMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryMatching }; diff --git a/src/astrochemistry/measurement.ts b/src/astrochemistry/measurement.ts new file mode 100644 index 000000000..9b8ef6d9d --- /dev/null +++ b/src/astrochemistry/measurement.ts @@ -0,0 +1,14 @@ +/** astrochemistry measurement module — tsb analytics library. */ +export interface AstrochemistryMeasurementOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryMeasurementResult { values: number[]; converged: boolean; } +export function computeAstrochemistryMeasurement(data: number[], opts: AstrochemistryMeasurementOptions = {}): AstrochemistryMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryMeasurement }; diff --git a/src/astrochemistry/metrics.ts b/src/astrochemistry/metrics.ts new file mode 100644 index 000000000..e3121dbe2 --- /dev/null +++ b/src/astrochemistry/metrics.ts @@ -0,0 +1,14 @@ +/** astrochemistry metrics module — tsb analytics library. */ +export interface AstrochemistryMetricsOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryMetricsResult { values: number[]; converged: boolean; } +export function computeAstrochemistryMetrics(data: number[], opts: AstrochemistryMetricsOptions = {}): AstrochemistryMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryMetrics }; diff --git a/src/astrochemistry/modeling.ts b/src/astrochemistry/modeling.ts new file mode 100644 index 000000000..af6842d5c --- /dev/null +++ b/src/astrochemistry/modeling.ts @@ -0,0 +1,14 @@ +/** astrochemistry modeling module — tsb analytics library. */ +export interface AstrochemistryModelingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryModelingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryModeling(data: number[], opts: AstrochemistryModelingOptions = {}): AstrochemistryModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryModeling }; diff --git a/src/astrochemistry/monitoring.ts b/src/astrochemistry/monitoring.ts new file mode 100644 index 000000000..ae2d44222 --- /dev/null +++ b/src/astrochemistry/monitoring.ts @@ -0,0 +1,14 @@ +/** astrochemistry monitoring module — tsb analytics library. */ +export interface AstrochemistryMonitoringOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryMonitoringResult { values: number[]; converged: boolean; } +export function computeAstrochemistryMonitoring(data: number[], opts: AstrochemistryMonitoringOptions = {}): AstrochemistryMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryMonitoring }; diff --git a/src/astrochemistry/nonlinear.ts b/src/astrochemistry/nonlinear.ts new file mode 100644 index 000000000..ef7593b38 --- /dev/null +++ b/src/astrochemistry/nonlinear.ts @@ -0,0 +1,14 @@ +/** astrochemistry nonlinear module — tsb analytics library. */ +export interface AstrochemistryNonlinearOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryNonlinearResult { values: number[]; converged: boolean; } +export function computeAstrochemistryNonlinear(data: number[], opts: AstrochemistryNonlinearOptions = {}): AstrochemistryNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryNonlinear }; diff --git a/src/astrochemistry/normalization.ts b/src/astrochemistry/normalization.ts new file mode 100644 index 000000000..b8e8130ab --- /dev/null +++ b/src/astrochemistry/normalization.ts @@ -0,0 +1,14 @@ +/** astrochemistry normalization module — tsb analytics library. */ +export interface AstrochemistryNormalizationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryNormalizationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryNormalization(data: number[], opts: AstrochemistryNormalizationOptions = {}): AstrochemistryNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryNormalization }; diff --git a/src/astrochemistry/optimization.ts b/src/astrochemistry/optimization.ts new file mode 100644 index 000000000..9bbc6d6f4 --- /dev/null +++ b/src/astrochemistry/optimization.ts @@ -0,0 +1,14 @@ +/** astrochemistry optimization module — tsb analytics library. */ +export interface AstrochemistryOptimizationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryOptimizationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryOptimization(data: number[], opts: AstrochemistryOptimizationOptions = {}): AstrochemistryOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryOptimization }; diff --git a/src/astrochemistry/patterns.ts b/src/astrochemistry/patterns.ts new file mode 100644 index 000000000..aafdf0716 --- /dev/null +++ b/src/astrochemistry/patterns.ts @@ -0,0 +1,14 @@ +/** astrochemistry patterns module — tsb analytics library. */ +export interface AstrochemistryPatternsOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryPatternsResult { values: number[]; converged: boolean; } +export function computeAstrochemistryPatterns(data: number[], opts: AstrochemistryPatternsOptions = {}): AstrochemistryPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryPatterns }; diff --git a/src/astrochemistry/permutation.ts b/src/astrochemistry/permutation.ts new file mode 100644 index 000000000..53ab85d6c --- /dev/null +++ b/src/astrochemistry/permutation.ts @@ -0,0 +1,14 @@ +/** astrochemistry permutation module — tsb analytics library. */ +export interface AstrochemistryPermutationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryPermutationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryPermutation(data: number[], opts: AstrochemistryPermutationOptions = {}): AstrochemistryPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryPermutation }; diff --git a/src/astrochemistry/prediction.ts b/src/astrochemistry/prediction.ts new file mode 100644 index 000000000..5a7993a2e --- /dev/null +++ b/src/astrochemistry/prediction.ts @@ -0,0 +1,14 @@ +/** astrochemistry prediction module — tsb analytics library. */ +export interface AstrochemistryPredictionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryPredictionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryPrediction(data: number[], opts: AstrochemistryPredictionOptions = {}): AstrochemistryPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryPrediction }; diff --git a/src/astrochemistry/processing.ts b/src/astrochemistry/processing.ts new file mode 100644 index 000000000..91313f975 --- /dev/null +++ b/src/astrochemistry/processing.ts @@ -0,0 +1,14 @@ +/** astrochemistry processing module — tsb analytics library. */ +export interface AstrochemistryProcessingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryProcessingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryProcessing(data: number[], opts: AstrochemistryProcessingOptions = {}): AstrochemistryProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryProcessing }; diff --git a/src/astrochemistry/profiling.ts b/src/astrochemistry/profiling.ts new file mode 100644 index 000000000..f4e3735d1 --- /dev/null +++ b/src/astrochemistry/profiling.ts @@ -0,0 +1,14 @@ +/** astrochemistry profiling module — tsb analytics library. */ +export interface AstrochemistryProfilingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryProfilingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryProfiling(data: number[], opts: AstrochemistryProfilingOptions = {}): AstrochemistryProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryProfiling }; diff --git a/src/astrochemistry/projection.ts b/src/astrochemistry/projection.ts new file mode 100644 index 000000000..e10f15020 --- /dev/null +++ b/src/astrochemistry/projection.ts @@ -0,0 +1,14 @@ +/** astrochemistry projection module — tsb analytics library. */ +export interface AstrochemistryProjectionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryProjectionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryProjection(data: number[], opts: AstrochemistryProjectionOptions = {}): AstrochemistryProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryProjection }; diff --git a/src/astrochemistry/ranking.ts b/src/astrochemistry/ranking.ts new file mode 100644 index 000000000..6b5cb6c65 --- /dev/null +++ b/src/astrochemistry/ranking.ts @@ -0,0 +1,14 @@ +/** astrochemistry ranking module — tsb analytics library. */ +export interface AstrochemistryRankingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryRankingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryRanking(data: number[], opts: AstrochemistryRankingOptions = {}): AstrochemistryRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryRanking }; diff --git a/src/astrochemistry/reconstruction.ts b/src/astrochemistry/reconstruction.ts new file mode 100644 index 000000000..c2e832ff9 --- /dev/null +++ b/src/astrochemistry/reconstruction.ts @@ -0,0 +1,14 @@ +/** astrochemistry reconstruction module — tsb analytics library. */ +export interface AstrochemistryReconstructionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryReconstructionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryReconstruction(data: number[], opts: AstrochemistryReconstructionOptions = {}): AstrochemistryReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryReconstruction }; diff --git a/src/astrochemistry/registration.ts b/src/astrochemistry/registration.ts new file mode 100644 index 000000000..0213ecfd2 --- /dev/null +++ b/src/astrochemistry/registration.ts @@ -0,0 +1,14 @@ +/** astrochemistry registration module — tsb analytics library. */ +export interface AstrochemistryRegistrationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryRegistrationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryRegistration(data: number[], opts: AstrochemistryRegistrationOptions = {}): AstrochemistryRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryRegistration }; diff --git a/src/astrochemistry/regression.ts b/src/astrochemistry/regression.ts new file mode 100644 index 000000000..0d5d984be --- /dev/null +++ b/src/astrochemistry/regression.ts @@ -0,0 +1,14 @@ +/** astrochemistry regression module — tsb analytics library. */ +export interface AstrochemistryRegressionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryRegressionResult { values: number[]; converged: boolean; } +export function computeAstrochemistryRegression(data: number[], opts: AstrochemistryRegressionOptions = {}): AstrochemistryRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryRegression }; diff --git a/src/astrochemistry/regularization.ts b/src/astrochemistry/regularization.ts new file mode 100644 index 000000000..205c78b17 --- /dev/null +++ b/src/astrochemistry/regularization.ts @@ -0,0 +1,14 @@ +/** astrochemistry regularization module — tsb analytics library. */ +export interface AstrochemistryRegularizationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryRegularizationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryRegularization(data: number[], opts: AstrochemistryRegularizationOptions = {}): AstrochemistryRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryRegularization }; diff --git a/src/astrochemistry/robustness.ts b/src/astrochemistry/robustness.ts new file mode 100644 index 000000000..4047c3989 --- /dev/null +++ b/src/astrochemistry/robustness.ts @@ -0,0 +1,14 @@ +/** astrochemistry robustness module — tsb analytics library. */ +export interface AstrochemistryRobustnessOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryRobustnessResult { values: number[]; converged: boolean; } +export function computeAstrochemistryRobustness(data: number[], opts: AstrochemistryRobustnessOptions = {}): AstrochemistryRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryRobustness }; diff --git a/src/astrochemistry/sampling.ts b/src/astrochemistry/sampling.ts new file mode 100644 index 000000000..5335d5b71 --- /dev/null +++ b/src/astrochemistry/sampling.ts @@ -0,0 +1,14 @@ +/** astrochemistry sampling module — tsb analytics library. */ +export interface AstrochemistrySamplingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySamplingResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySampling(data: number[], opts: AstrochemistrySamplingOptions = {}): AstrochemistrySamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySampling }; diff --git a/src/astrochemistry/sampling2.ts b/src/astrochemistry/sampling2.ts new file mode 100644 index 000000000..e09d4c40a --- /dev/null +++ b/src/astrochemistry/sampling2.ts @@ -0,0 +1,14 @@ +/** astrochemistry sampling2 module — tsb analytics library. */ +export interface AstrochemistrySamplingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySamplingResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySampling(data: number[], opts: AstrochemistrySamplingOptions = {}): AstrochemistrySamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySampling }; diff --git a/src/astrochemistry/scaling.ts b/src/astrochemistry/scaling.ts new file mode 100644 index 000000000..b827db92b --- /dev/null +++ b/src/astrochemistry/scaling.ts @@ -0,0 +1,14 @@ +/** astrochemistry scaling module — tsb analytics library. */ +export interface AstrochemistryScalingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryScalingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryScaling(data: number[], opts: AstrochemistryScalingOptions = {}): AstrochemistryScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryScaling }; diff --git a/src/astrochemistry/scoring.ts b/src/astrochemistry/scoring.ts new file mode 100644 index 000000000..209143687 --- /dev/null +++ b/src/astrochemistry/scoring.ts @@ -0,0 +1,14 @@ +/** astrochemistry scoring module — tsb analytics library. */ +export interface AstrochemistryScoringOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryScoringResult { values: number[]; converged: boolean; } +export function computeAstrochemistryScoring(data: number[], opts: AstrochemistryScoringOptions = {}): AstrochemistryScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryScoring }; diff --git a/src/astrochemistry/segmentation.ts b/src/astrochemistry/segmentation.ts new file mode 100644 index 000000000..025360a92 --- /dev/null +++ b/src/astrochemistry/segmentation.ts @@ -0,0 +1,14 @@ +/** astrochemistry segmentation module — tsb analytics library. */ +export interface AstrochemistrySegmentationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySegmentationResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySegmentation(data: number[], opts: AstrochemistrySegmentationOptions = {}): AstrochemistrySegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySegmentation }; diff --git a/src/astrochemistry/selection.ts b/src/astrochemistry/selection.ts new file mode 100644 index 000000000..cbf51874b --- /dev/null +++ b/src/astrochemistry/selection.ts @@ -0,0 +1,14 @@ +/** astrochemistry selection module — tsb analytics library. */ +export interface AstrochemistrySelectionOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySelectionResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySelection(data: number[], opts: AstrochemistrySelectionOptions = {}): AstrochemistrySelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySelection }; diff --git a/src/astrochemistry/sensitivity.ts b/src/astrochemistry/sensitivity.ts new file mode 100644 index 000000000..151c5e7fb --- /dev/null +++ b/src/astrochemistry/sensitivity.ts @@ -0,0 +1,14 @@ +/** astrochemistry sensitivity module — tsb analytics library. */ +export interface AstrochemistrySensitivityOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySensitivityResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySensitivity(data: number[], opts: AstrochemistrySensitivityOptions = {}): AstrochemistrySensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySensitivity }; diff --git a/src/astrochemistry/simulation.ts b/src/astrochemistry/simulation.ts new file mode 100644 index 000000000..6aed34d5b --- /dev/null +++ b/src/astrochemistry/simulation.ts @@ -0,0 +1,14 @@ +/** astrochemistry simulation module — tsb analytics library. */ +export interface AstrochemistrySimulationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySimulationResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySimulation(data: number[], opts: AstrochemistrySimulationOptions = {}): AstrochemistrySimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySimulation }; diff --git a/src/astrochemistry/smoothing.ts b/src/astrochemistry/smoothing.ts new file mode 100644 index 000000000..5612d9cc3 --- /dev/null +++ b/src/astrochemistry/smoothing.ts @@ -0,0 +1,14 @@ +/** astrochemistry smoothing module — tsb analytics library. */ +export interface AstrochemistrySmoothingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySmoothingResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySmoothing(data: number[], opts: AstrochemistrySmoothingOptions = {}): AstrochemistrySmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySmoothing }; diff --git a/src/astrochemistry/stability.ts b/src/astrochemistry/stability.ts new file mode 100644 index 000000000..26a9e44ca --- /dev/null +++ b/src/astrochemistry/stability.ts @@ -0,0 +1,14 @@ +/** astrochemistry stability module — tsb analytics library. */ +export interface AstrochemistryStabilityOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryStabilityResult { values: number[]; converged: boolean; } +export function computeAstrochemistryStability(data: number[], opts: AstrochemistryStabilityOptions = {}): AstrochemistryStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryStability }; diff --git a/src/astrochemistry/stacking.ts b/src/astrochemistry/stacking.ts new file mode 100644 index 000000000..a5f78e6a3 --- /dev/null +++ b/src/astrochemistry/stacking.ts @@ -0,0 +1,14 @@ +/** astrochemistry stacking module — tsb analytics library. */ +export interface AstrochemistryStackingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryStackingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryStacking(data: number[], opts: AstrochemistryStackingOptions = {}): AstrochemistryStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryStacking }; diff --git a/src/astrochemistry/standardization.ts b/src/astrochemistry/standardization.ts new file mode 100644 index 000000000..e84b280dc --- /dev/null +++ b/src/astrochemistry/standardization.ts @@ -0,0 +1,14 @@ +/** astrochemistry standardization module — tsb analytics library. */ +export interface AstrochemistryStandardizationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryStandardizationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryStandardization(data: number[], opts: AstrochemistryStandardizationOptions = {}): AstrochemistryStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryStandardization }; diff --git a/src/astrochemistry/static.ts b/src/astrochemistry/static.ts new file mode 100644 index 000000000..d59a6b520 --- /dev/null +++ b/src/astrochemistry/static.ts @@ -0,0 +1,14 @@ +/** astrochemistry static module — tsb analytics library. */ +export interface AstrochemistryStaticOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryStaticResult { values: number[]; converged: boolean; } +export function computeAstrochemistryStatic(data: number[], opts: AstrochemistryStaticOptions = {}): AstrochemistryStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryStatic }; diff --git a/src/astrochemistry/stochastic.ts b/src/astrochemistry/stochastic.ts new file mode 100644 index 000000000..f9054bbfa --- /dev/null +++ b/src/astrochemistry/stochastic.ts @@ -0,0 +1,14 @@ +/** astrochemistry stochastic module — tsb analytics library. */ +export interface AstrochemistryStochasticOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryStochasticResult { values: number[]; converged: boolean; } +export function computeAstrochemistryStochastic(data: number[], opts: AstrochemistryStochasticOptions = {}): AstrochemistryStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryStochastic }; diff --git a/src/astrochemistry/synthesis.ts b/src/astrochemistry/synthesis.ts new file mode 100644 index 000000000..dc81c64a8 --- /dev/null +++ b/src/astrochemistry/synthesis.ts @@ -0,0 +1,14 @@ +/** astrochemistry synthesis module — tsb analytics library. */ +export interface AstrochemistrySynthesisOptions { tol?: number; maxIter?: number; } +export interface AstrochemistrySynthesisResult { values: number[]; converged: boolean; } +export function computeAstrochemistrySynthesis(data: number[], opts: AstrochemistrySynthesisOptions = {}): AstrochemistrySynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistrySynthesis }; diff --git a/src/astrochemistry/topology.ts b/src/astrochemistry/topology.ts new file mode 100644 index 000000000..dc0951534 --- /dev/null +++ b/src/astrochemistry/topology.ts @@ -0,0 +1,14 @@ +/** astrochemistry topology module — tsb analytics library. */ +export interface AstrochemistryTopologyOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryTopologyResult { values: number[]; converged: boolean; } +export function computeAstrochemistryTopology(data: number[], opts: AstrochemistryTopologyOptions = {}): AstrochemistryTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryTopology }; diff --git a/src/astrochemistry/tracking.ts b/src/astrochemistry/tracking.ts new file mode 100644 index 000000000..4187e6643 --- /dev/null +++ b/src/astrochemistry/tracking.ts @@ -0,0 +1,14 @@ +/** astrochemistry tracking module — tsb analytics library. */ +export interface AstrochemistryTrackingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryTrackingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryTracking(data: number[], opts: AstrochemistryTrackingOptions = {}): AstrochemistryTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryTracking }; diff --git a/src/astrochemistry/transform.ts b/src/astrochemistry/transform.ts new file mode 100644 index 000000000..6ba241e67 --- /dev/null +++ b/src/astrochemistry/transform.ts @@ -0,0 +1,14 @@ +/** astrochemistry transform module — tsb analytics library. */ +export interface AstrochemistryTransformOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryTransformResult { values: number[]; converged: boolean; } +export function computeAstrochemistryTransform(data: number[], opts: AstrochemistryTransformOptions = {}): AstrochemistryTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryTransform }; diff --git a/src/astrochemistry/uncertainty.ts b/src/astrochemistry/uncertainty.ts new file mode 100644 index 000000000..4e5dc0f17 --- /dev/null +++ b/src/astrochemistry/uncertainty.ts @@ -0,0 +1,14 @@ +/** astrochemistry uncertainty module — tsb analytics library. */ +export interface AstrochemistryUncertaintyOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryUncertaintyResult { values: number[]; converged: boolean; } +export function computeAstrochemistryUncertainty(data: number[], opts: AstrochemistryUncertaintyOptions = {}): AstrochemistryUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryUncertainty }; diff --git a/src/astrochemistry/validation.ts b/src/astrochemistry/validation.ts new file mode 100644 index 000000000..fadc4f3cb --- /dev/null +++ b/src/astrochemistry/validation.ts @@ -0,0 +1,14 @@ +/** astrochemistry validation module — tsb analytics library. */ +export interface AstrochemistryValidationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryValidationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryValidation(data: number[], opts: AstrochemistryValidationOptions = {}): AstrochemistryValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryValidation }; diff --git a/src/astrochemistry/verification.ts b/src/astrochemistry/verification.ts new file mode 100644 index 000000000..1a743af9e --- /dev/null +++ b/src/astrochemistry/verification.ts @@ -0,0 +1,14 @@ +/** astrochemistry verification module — tsb analytics library. */ +export interface AstrochemistryVerificationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryVerificationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryVerification(data: number[], opts: AstrochemistryVerificationOptions = {}): AstrochemistryVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryVerification }; diff --git a/src/astrochemistry/visualization.ts b/src/astrochemistry/visualization.ts new file mode 100644 index 000000000..328cd84e9 --- /dev/null +++ b/src/astrochemistry/visualization.ts @@ -0,0 +1,14 @@ +/** astrochemistry visualization module — tsb analytics library. */ +export interface AstrochemistryVisualizationOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryVisualizationResult { values: number[]; converged: boolean; } +export function computeAstrochemistryVisualization(data: number[], opts: AstrochemistryVisualizationOptions = {}): AstrochemistryVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryVisualization }; diff --git a/src/astrochemistry/voting.ts b/src/astrochemistry/voting.ts new file mode 100644 index 000000000..811ef5721 --- /dev/null +++ b/src/astrochemistry/voting.ts @@ -0,0 +1,14 @@ +/** astrochemistry voting module — tsb analytics library. */ +export interface AstrochemistryVotingOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryVotingResult { values: number[]; converged: boolean; } +export function computeAstrochemistryVoting(data: number[], opts: AstrochemistryVotingOptions = {}): AstrochemistryVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryVoting }; diff --git a/src/astrochemistry/wavelet.ts b/src/astrochemistry/wavelet.ts new file mode 100644 index 000000000..dadc53f27 --- /dev/null +++ b/src/astrochemistry/wavelet.ts @@ -0,0 +1,14 @@ +/** astrochemistry wavelet module — tsb analytics library. */ +export interface AstrochemistryWaveletOptions { tol?: number; maxIter?: number; } +export interface AstrochemistryWaveletResult { values: number[]; converged: boolean; } +export function computeAstrochemistryWavelet(data: number[], opts: AstrochemistryWaveletOptions = {}): AstrochemistryWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstrochemistryWavelet }; diff --git a/src/astronomy/advanced.ts b/src/astronomy/advanced.ts new file mode 100644 index 000000000..81574373d --- /dev/null +++ b/src/astronomy/advanced.ts @@ -0,0 +1,15 @@ +/** Astronomy Advanced module — tsb analytics library. */ +export interface Astronomy advancedOptions { tol?: number; maxIter?: number; } +export interface Astronomy advancedResult { values: number[]; converged: boolean; } +export function computeAstronomy advanced(data: number[], opts: Astronomy advancedOptions = {}): Astronomy advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy advanced }; diff --git a/src/astronomy/astrometry.ts b/src/astronomy/astrometry.ts new file mode 100644 index 000000000..217fa973e --- /dev/null +++ b/src/astronomy/astrometry.ts @@ -0,0 +1,22 @@ +/** Astrometry module — tsb analytics library. */ + +/** Options for Astrometry. */ +export interface AstrometryOptions { tol?: number; maxIter?: number; } + +/** Result from Astrometry. */ +export interface AstrometryResult { values: number[]; converged: boolean; } + +/** Compute Astrometry. */ +export function computeAstrometry(data: number[], opts: AstrometryOptions = {}): AstrometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAstrometry }; diff --git a/src/astronomy/base2.ts b/src/astronomy/base2.ts new file mode 100644 index 000000000..7bd2b6af0 --- /dev/null +++ b/src/astronomy/base2.ts @@ -0,0 +1,15 @@ +/** Astronomy Base2 module — tsb analytics library. */ +export interface Astronomy base2Options { tol?: number; maxIter?: number; } +export interface Astronomy base2Result { values: number[]; converged: boolean; } +export function computeAstronomy base2(data: number[], opts: Astronomy base2Options = {}): Astronomy base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy base2 }; diff --git a/src/astronomy/batch.ts b/src/astronomy/batch.ts new file mode 100644 index 000000000..42c23a79f --- /dev/null +++ b/src/astronomy/batch.ts @@ -0,0 +1,15 @@ +/** Astronomy Batch module — tsb analytics library. */ +export interface Astronomy batchOptions { tol?: number; maxIter?: number; } +export interface Astronomy batchResult { values: number[]; converged: boolean; } +export function computeAstronomy batch(data: number[], opts: Astronomy batchOptions = {}): Astronomy batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy batch }; diff --git a/src/astronomy/beta.ts b/src/astronomy/beta.ts new file mode 100644 index 000000000..993b9d611 --- /dev/null +++ b/src/astronomy/beta.ts @@ -0,0 +1,15 @@ +/** Astronomy Beta module — tsb analytics library. */ +export interface Astronomy betaOptions { tol?: number; maxIter?: number; } +export interface Astronomy betaResult { values: number[]; converged: boolean; } +export function computeAstronomy beta(data: number[], opts: Astronomy betaOptions = {}): Astronomy betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy beta }; diff --git a/src/astronomy/binary.ts b/src/astronomy/binary.ts new file mode 100644 index 000000000..81b53b0f8 --- /dev/null +++ b/src/astronomy/binary.ts @@ -0,0 +1,22 @@ +/** Binary module — tsb analytics library. */ + +/** Options for Binary. */ +export interface BinaryOptions { tol?: number; maxIter?: number; } + +/** Result from Binary. */ +export interface BinaryResult { values: number[]; converged: boolean; } + +/** Compute Binary. */ +export function computeBinary(data: number[], opts: BinaryOptions = {}): BinaryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBinary }; diff --git a/src/astronomy/blackhole.ts b/src/astronomy/blackhole.ts new file mode 100644 index 000000000..a4c6aaf4d --- /dev/null +++ b/src/astronomy/blackhole.ts @@ -0,0 +1,22 @@ +/** Blackhole module — tsb analytics library. */ + +/** Options for Blackhole. */ +export interface BlackholeOptions { tol?: number; maxIter?: number; } + +/** Result from Blackhole. */ +export interface BlackholeResult { values: number[]; converged: boolean; } + +/** Compute Blackhole. */ +export function computeBlackhole(data: number[], opts: BlackholeOptions = {}): BlackholeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBlackhole }; diff --git a/src/astronomy/catalog.ts b/src/astronomy/catalog.ts new file mode 100644 index 000000000..659fe9ddd --- /dev/null +++ b/src/astronomy/catalog.ts @@ -0,0 +1,22 @@ +/** Catalog module — tsb analytics library. */ + +/** Options for Catalog. */ +export interface CatalogOptions { tol?: number; maxIter?: number; } + +/** Result from Catalog. */ +export interface CatalogResult { values: number[]; converged: boolean; } + +/** Compute Catalog. */ +export function computeCatalog(data: number[], opts: CatalogOptions = {}): CatalogResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCatalog }; diff --git a/src/astronomy/cluster.ts b/src/astronomy/cluster.ts new file mode 100644 index 000000000..5d0a923bf --- /dev/null +++ b/src/astronomy/cluster.ts @@ -0,0 +1,22 @@ +/** Cluster module — tsb analytics library. */ + +/** Options for Cluster. */ +export interface ClusterOptions { tol?: number; maxIter?: number; } + +/** Result from Cluster. */ +export interface ClusterResult { values: number[]; converged: boolean; } + +/** Compute Cluster. */ +export function computeCluster(data: number[], opts: ClusterOptions = {}): ClusterResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCluster }; diff --git a/src/astronomy/cmb.ts b/src/astronomy/cmb.ts new file mode 100644 index 000000000..b7a1530ef --- /dev/null +++ b/src/astronomy/cmb.ts @@ -0,0 +1,22 @@ +/** Cmb module — tsb analytics library. */ + +/** Options for Cmb. */ +export interface CmbOptions { tol?: number; maxIter?: number; } + +/** Result from Cmb. */ +export interface CmbResult { values: number[]; converged: boolean; } + +/** Compute Cmb. */ +export function computeCmb(data: number[], opts: CmbOptions = {}): CmbResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCmb }; diff --git a/src/astronomy/cosmological.ts b/src/astronomy/cosmological.ts new file mode 100644 index 000000000..d8b6f25f0 --- /dev/null +++ b/src/astronomy/cosmological.ts @@ -0,0 +1,22 @@ +/** Cosmological module — tsb analytics library. */ + +/** Options for Cosmological. */ +export interface CosmologicalOptions { tol?: number; maxIter?: number; } + +/** Result from Cosmological. */ +export interface CosmologicalResult { values: number[]; converged: boolean; } + +/** Compute Cosmological. */ +export function computeCosmological(data: number[], opts: CosmologicalOptions = {}): CosmologicalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCosmological }; diff --git a/src/astronomy/cpu.ts b/src/astronomy/cpu.ts new file mode 100644 index 000000000..5a1d53a7a --- /dev/null +++ b/src/astronomy/cpu.ts @@ -0,0 +1,15 @@ +/** Astronomy Cpu module — tsb analytics library. */ +export interface Astronomy cpuOptions { tol?: number; maxIter?: number; } +export interface Astronomy cpuResult { values: number[]; converged: boolean; } +export function computeAstronomy cpu(data: number[], opts: Astronomy cpuOptions = {}): Astronomy cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy cpu }; diff --git a/src/astronomy/crossmatch.ts b/src/astronomy/crossmatch.ts new file mode 100644 index 000000000..094b5c006 --- /dev/null +++ b/src/astronomy/crossmatch.ts @@ -0,0 +1,22 @@ +/** Crossmatch module — tsb analytics library. */ + +/** Options for Crossmatch. */ +export interface CrossmatchOptions { tol?: number; maxIter?: number; } + +/** Result from Crossmatch. */ +export interface CrossmatchResult { values: number[]; converged: boolean; } + +/** Compute Crossmatch. */ +export function computeCrossmatch(data: number[], opts: CrossmatchOptions = {}): CrossmatchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCrossmatch }; diff --git a/src/astronomy/dark_energy.ts b/src/astronomy/dark_energy.ts new file mode 100644 index 000000000..b793018bc --- /dev/null +++ b/src/astronomy/dark_energy.ts @@ -0,0 +1,22 @@ +/** Dark Energy module — tsb analytics library. */ + +/** Options for Dark Energy. */ +export interface DarkEnergyOptions { tol?: number; maxIter?: number; } + +/** Result from Dark Energy. */ +export interface DarkEnergyResult { values: number[]; converged: boolean; } + +/** Compute Dark Energy. */ +export function computeDarkEnergy(data: number[], opts: DarkEnergyOptions = {}): DarkEnergyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDarkEnergy }; diff --git a/src/astronomy/dark_matter.ts b/src/astronomy/dark_matter.ts new file mode 100644 index 000000000..315b1151f --- /dev/null +++ b/src/astronomy/dark_matter.ts @@ -0,0 +1,22 @@ +/** Dark Matter module — tsb analytics library. */ + +/** Options for Dark Matter. */ +export interface DarkMatterOptions { tol?: number; maxIter?: number; } + +/** Result from Dark Matter. */ +export interface DarkMatterResult { values: number[]; converged: boolean; } + +/** Compute Dark Matter. */ +export function computeDarkMatter(data: number[], opts: DarkMatterOptions = {}): DarkMatterResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDarkMatter }; diff --git a/src/astronomy/deblending.ts b/src/astronomy/deblending.ts new file mode 100644 index 000000000..7b7d41a00 --- /dev/null +++ b/src/astronomy/deblending.ts @@ -0,0 +1,22 @@ +/** Deblending module — tsb analytics library. */ + +/** Options for Deblending. */ +export interface DeblendingOptions { tol?: number; maxIter?: number; } + +/** Result from Deblending. */ +export interface DeblendingResult { values: number[]; converged: boolean; } + +/** Compute Deblending. */ +export function computeDeblending(data: number[], opts: DeblendingOptions = {}): DeblendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDeblending }; diff --git a/src/astronomy/dense.ts b/src/astronomy/dense.ts new file mode 100644 index 000000000..6224bec03 --- /dev/null +++ b/src/astronomy/dense.ts @@ -0,0 +1,15 @@ +/** Astronomy Dense module — tsb analytics library. */ +export interface Astronomy denseOptions { tol?: number; maxIter?: number; } +export interface Astronomy denseResult { values: number[]; converged: boolean; } +export function computeAstronomy dense(data: number[], opts: Astronomy denseOptions = {}): Astronomy denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy dense }; diff --git a/src/astronomy/distributed.ts b/src/astronomy/distributed.ts new file mode 100644 index 000000000..f0ed856a2 --- /dev/null +++ b/src/astronomy/distributed.ts @@ -0,0 +1,15 @@ +/** Astronomy Distributed module — tsb analytics library. */ +export interface Astronomy distributedOptions { tol?: number; maxIter?: number; } +export interface Astronomy distributedResult { values: number[]; converged: boolean; } +export function computeAstronomy distributed(data: number[], opts: Astronomy distributedOptions = {}): Astronomy distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy distributed }; diff --git a/src/astronomy/exoplanet.ts b/src/astronomy/exoplanet.ts new file mode 100644 index 000000000..0e25c8cd1 --- /dev/null +++ b/src/astronomy/exoplanet.ts @@ -0,0 +1,22 @@ +/** Exoplanet module — tsb analytics library. */ + +/** Options for Exoplanet. */ +export interface ExoplanetOptions { tol?: number; maxIter?: number; } + +/** Result from Exoplanet. */ +export interface ExoplanetResult { values: number[]; converged: boolean; } + +/** Compute Exoplanet. */ +export function computeExoplanet(data: number[], opts: ExoplanetOptions = {}): ExoplanetResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeExoplanet }; diff --git a/src/astronomy/experimental.ts b/src/astronomy/experimental.ts new file mode 100644 index 000000000..ad4b8d9f0 --- /dev/null +++ b/src/astronomy/experimental.ts @@ -0,0 +1,15 @@ +/** Astronomy Experimental module — tsb analytics library. */ +export interface Astronomy experimentalOptions { tol?: number; maxIter?: number; } +export interface Astronomy experimentalResult { values: number[]; converged: boolean; } +export function computeAstronomy experimental(data: number[], opts: Astronomy experimentalOptions = {}): Astronomy experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy experimental }; diff --git a/src/astronomy/fast.ts b/src/astronomy/fast.ts new file mode 100644 index 000000000..f2e21ea61 --- /dev/null +++ b/src/astronomy/fast.ts @@ -0,0 +1,15 @@ +/** Astronomy Fast module — tsb analytics library. */ +export interface Astronomy fastOptions { tol?: number; maxIter?: number; } +export interface Astronomy fastResult { values: number[]; converged: boolean; } +export function computeAstronomy fast(data: number[], opts: Astronomy fastOptions = {}): Astronomy fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy fast }; diff --git a/src/astronomy/future.ts b/src/astronomy/future.ts new file mode 100644 index 000000000..1ca1d2427 --- /dev/null +++ b/src/astronomy/future.ts @@ -0,0 +1,15 @@ +/** Astronomy Future module — tsb analytics library. */ +export interface Astronomy futureOptions { tol?: number; maxIter?: number; } +export interface Astronomy futureResult { values: number[]; converged: boolean; } +export function computeAstronomy future(data: number[], opts: Astronomy futureOptions = {}): Astronomy futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy future }; diff --git a/src/astronomy/galactic.ts b/src/astronomy/galactic.ts new file mode 100644 index 000000000..76c944454 --- /dev/null +++ b/src/astronomy/galactic.ts @@ -0,0 +1,22 @@ +/** Galactic module — tsb analytics library. */ + +/** Options for Galactic. */ +export interface GalacticOptions { tol?: number; maxIter?: number; } + +/** Result from Galactic. */ +export interface GalacticResult { values: number[]; converged: boolean; } + +/** Compute Galactic. */ +export function computeGalactic(data: number[], opts: GalacticOptions = {}): GalacticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGalactic }; diff --git a/src/astronomy/gpu.ts b/src/astronomy/gpu.ts new file mode 100644 index 000000000..2982bfbe1 --- /dev/null +++ b/src/astronomy/gpu.ts @@ -0,0 +1,15 @@ +/** Astronomy Gpu module — tsb analytics library. */ +export interface Astronomy gpuOptions { tol?: number; maxIter?: number; } +export interface Astronomy gpuResult { values: number[]; converged: boolean; } +export function computeAstronomy gpu(data: number[], opts: Astronomy gpuOptions = {}): Astronomy gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy gpu }; diff --git a/src/astronomy/gravitational_wave.ts b/src/astronomy/gravitational_wave.ts new file mode 100644 index 000000000..291267326 --- /dev/null +++ b/src/astronomy/gravitational_wave.ts @@ -0,0 +1,22 @@ +/** Gravitational Wave module — tsb analytics library. */ + +/** Options for Gravitational Wave. */ +export interface GravitationalWaveOptions { tol?: number; maxIter?: number; } + +/** Result from Gravitational Wave. */ +export interface GravitationalWaveResult { values: number[]; converged: boolean; } + +/** Compute Gravitational Wave. */ +export function computeGravitationalWave(data: number[], opts: GravitationalWaveOptions = {}): GravitationalWaveResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGravitationalWave }; diff --git a/src/astronomy/image_processing.ts b/src/astronomy/image_processing.ts new file mode 100644 index 000000000..685eca7f4 --- /dev/null +++ b/src/astronomy/image_processing.ts @@ -0,0 +1,22 @@ +/** Image Processing module — tsb analytics library. */ + +/** Options for Image Processing. */ +export interface ImageProcessingOptions { tol?: number; maxIter?: number; } + +/** Result from Image Processing. */ +export interface ImageProcessingResult { values: number[]; converged: boolean; } + +/** Compute Image Processing. */ +export function computeImageProcessing(data: number[], opts: ImageProcessingOptions = {}): ImageProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeImageProcessing }; diff --git a/src/astronomy/interferometry.ts b/src/astronomy/interferometry.ts new file mode 100644 index 000000000..34353467d --- /dev/null +++ b/src/astronomy/interferometry.ts @@ -0,0 +1,22 @@ +/** Interferometry module — tsb analytics library. */ + +/** Options for Interferometry. */ +export interface InterferometryOptions { tol?: number; maxIter?: number; } + +/** Result from Interferometry. */ +export interface InterferometryResult { values: number[]; converged: boolean; } + +/** Compute Interferometry. */ +export function computeInterferometry(data: number[], opts: InterferometryOptions = {}): InterferometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeInterferometry }; diff --git a/src/astronomy/large.ts b/src/astronomy/large.ts new file mode 100644 index 000000000..ab36b0cd6 --- /dev/null +++ b/src/astronomy/large.ts @@ -0,0 +1,15 @@ +/** Astronomy Large module — tsb analytics library. */ +export interface Astronomy largeOptions { tol?: number; maxIter?: number; } +export interface Astronomy largeResult { values: number[]; converged: boolean; } +export function computeAstronomy large(data: number[], opts: Astronomy largeOptions = {}): Astronomy largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy large }; diff --git a/src/astronomy/legacy.ts b/src/astronomy/legacy.ts new file mode 100644 index 000000000..6e062c75f --- /dev/null +++ b/src/astronomy/legacy.ts @@ -0,0 +1,15 @@ +/** Astronomy Legacy module — tsb analytics library. */ +export interface Astronomy legacyOptions { tol?: number; maxIter?: number; } +export interface Astronomy legacyResult { values: number[]; converged: boolean; } +export function computeAstronomy legacy(data: number[], opts: Astronomy legacyOptions = {}): Astronomy legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy legacy }; diff --git a/src/astronomy/lite.ts b/src/astronomy/lite.ts new file mode 100644 index 000000000..b53a31d1f --- /dev/null +++ b/src/astronomy/lite.ts @@ -0,0 +1,15 @@ +/** Astronomy Lite module — tsb analytics library. */ +export interface Astronomy liteOptions { tol?: number; maxIter?: number; } +export interface Astronomy liteResult { values: number[]; converged: boolean; } +export function computeAstronomy lite(data: number[], opts: Astronomy liteOptions = {}): Astronomy liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy lite }; diff --git a/src/astronomy/mini.ts b/src/astronomy/mini.ts new file mode 100644 index 000000000..8eb46b778 --- /dev/null +++ b/src/astronomy/mini.ts @@ -0,0 +1,15 @@ +/** Astronomy Mini module — tsb analytics library. */ +export interface Astronomy miniOptions { tol?: number; maxIter?: number; } +export interface Astronomy miniResult { values: number[]; converged: boolean; } +export function computeAstronomy mini(data: number[], opts: Astronomy miniOptions = {}): Astronomy miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy mini }; diff --git a/src/astronomy/nebula.ts b/src/astronomy/nebula.ts new file mode 100644 index 000000000..5818b5a4c --- /dev/null +++ b/src/astronomy/nebula.ts @@ -0,0 +1,22 @@ +/** Nebula module — tsb analytics library. */ + +/** Options for Nebula. */ +export interface NebulaOptions { tol?: number; maxIter?: number; } + +/** Result from Nebula. */ +export interface NebulaResult { values: number[]; converged: boolean; } + +/** Compute Nebula. */ +export function computeNebula(data: number[], opts: NebulaOptions = {}): NebulaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNebula }; diff --git a/src/astronomy/neutron_star.ts b/src/astronomy/neutron_star.ts new file mode 100644 index 000000000..88b21a862 --- /dev/null +++ b/src/astronomy/neutron_star.ts @@ -0,0 +1,22 @@ +/** Neutron Star module — tsb analytics library. */ + +/** Options for Neutron Star. */ +export interface NeutronStarOptions { tol?: number; maxIter?: number; } + +/** Result from Neutron Star. */ +export interface NeutronStarResult { values: number[]; converged: boolean; } + +/** Compute Neutron Star. */ +export function computeNeutronStar(data: number[], opts: NeutronStarOptions = {}): NeutronStarResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNeutronStar }; diff --git a/src/astronomy/next.ts b/src/astronomy/next.ts new file mode 100644 index 000000000..e0ae58998 --- /dev/null +++ b/src/astronomy/next.ts @@ -0,0 +1,15 @@ +/** Astronomy Next module — tsb analytics library. */ +export interface Astronomy nextOptions { tol?: number; maxIter?: number; } +export interface Astronomy nextResult { values: number[]; converged: boolean; } +export function computeAstronomy next(data: number[], opts: Astronomy nextOptions = {}): Astronomy nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy next }; diff --git a/src/astronomy/online.ts b/src/astronomy/online.ts new file mode 100644 index 000000000..affd3f596 --- /dev/null +++ b/src/astronomy/online.ts @@ -0,0 +1,15 @@ +/** Astronomy Online module — tsb analytics library. */ +export interface Astronomy onlineOptions { tol?: number; maxIter?: number; } +export interface Astronomy onlineResult { values: number[]; converged: boolean; } +export function computeAstronomy online(data: number[], opts: Astronomy onlineOptions = {}): Astronomy onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy online }; diff --git a/src/astronomy/parallel.ts b/src/astronomy/parallel.ts new file mode 100644 index 000000000..063c31997 --- /dev/null +++ b/src/astronomy/parallel.ts @@ -0,0 +1,15 @@ +/** Astronomy Parallel module — tsb analytics library. */ +export interface Astronomy parallelOptions { tol?: number; maxIter?: number; } +export interface Astronomy parallelResult { values: number[]; converged: boolean; } +export function computeAstronomy parallel(data: number[], opts: Astronomy parallelOptions = {}): Astronomy parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy parallel }; diff --git a/src/astronomy/photometric_redshift.ts b/src/astronomy/photometric_redshift.ts new file mode 100644 index 000000000..26f5244fc --- /dev/null +++ b/src/astronomy/photometric_redshift.ts @@ -0,0 +1,22 @@ +/** Photometric Redshift module — tsb analytics library. */ + +/** Options for Photometric Redshift. */ +export interface PhotometricRedshiftOptions { tol?: number; maxIter?: number; } + +/** Result from Photometric Redshift. */ +export interface PhotometricRedshiftResult { values: number[]; converged: boolean; } + +/** Compute Photometric Redshift. */ +export function computePhotometricRedshift(data: number[], opts: PhotometricRedshiftOptions = {}): PhotometricRedshiftResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePhotometricRedshift }; diff --git a/src/astronomy/photometry.ts b/src/astronomy/photometry.ts new file mode 100644 index 000000000..d541a94cd --- /dev/null +++ b/src/astronomy/photometry.ts @@ -0,0 +1,22 @@ +/** Photometry module — tsb analytics library. */ + +/** Options for Photometry. */ +export interface PhotometryOptions { tol?: number; maxIter?: number; } + +/** Result from Photometry. */ +export interface PhotometryResult { values: number[]; converged: boolean; } + +/** Compute Photometry. */ +export function computePhotometry(data: number[], opts: PhotometryOptions = {}): PhotometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePhotometry }; diff --git a/src/astronomy/planetary.ts b/src/astronomy/planetary.ts new file mode 100644 index 000000000..15938f362 --- /dev/null +++ b/src/astronomy/planetary.ts @@ -0,0 +1,22 @@ +/** Planetary module — tsb analytics library. */ + +/** Options for Planetary. */ +export interface PlanetaryOptions { tol?: number; maxIter?: number; } + +/** Result from Planetary. */ +export interface PlanetaryResult { values: number[]; converged: boolean; } + +/** Compute Planetary. */ +export function computePlanetary(data: number[], opts: PlanetaryOptions = {}): PlanetaryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePlanetary }; diff --git a/src/astronomy/plus.ts b/src/astronomy/plus.ts new file mode 100644 index 000000000..0053e78ea --- /dev/null +++ b/src/astronomy/plus.ts @@ -0,0 +1,15 @@ +/** Astronomy Plus module — tsb analytics library. */ +export interface Astronomy plusOptions { tol?: number; maxIter?: number; } +export interface Astronomy plusResult { values: number[]; converged: boolean; } +export function computeAstronomy plus(data: number[], opts: Astronomy plusOptions = {}): Astronomy plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy plus }; diff --git a/src/astronomy/pro.ts b/src/astronomy/pro.ts new file mode 100644 index 000000000..76573d8f2 --- /dev/null +++ b/src/astronomy/pro.ts @@ -0,0 +1,15 @@ +/** Astronomy Pro module — tsb analytics library. */ +export interface Astronomy proOptions { tol?: number; maxIter?: number; } +export interface Astronomy proResult { values: number[]; converged: boolean; } +export function computeAstronomy pro(data: number[], opts: Astronomy proOptions = {}): Astronomy proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy pro }; diff --git a/src/astronomy/robust.ts b/src/astronomy/robust.ts new file mode 100644 index 000000000..8fa2d166b --- /dev/null +++ b/src/astronomy/robust.ts @@ -0,0 +1,15 @@ +/** Astronomy Robust module — tsb analytics library. */ +export interface Astronomy robustOptions { tol?: number; maxIter?: number; } +export interface Astronomy robustResult { values: number[]; converged: boolean; } +export function computeAstronomy robust(data: number[], opts: Astronomy robustOptions = {}): Astronomy robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy robust }; diff --git a/src/astronomy/small.ts b/src/astronomy/small.ts new file mode 100644 index 000000000..44c42613b --- /dev/null +++ b/src/astronomy/small.ts @@ -0,0 +1,15 @@ +/** Astronomy Small module — tsb analytics library. */ +export interface Astronomy smallOptions { tol?: number; maxIter?: number; } +export interface Astronomy smallResult { values: number[]; converged: boolean; } +export function computeAstronomy small(data: number[], opts: Astronomy smallOptions = {}): Astronomy smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy small }; diff --git a/src/astronomy/solar.ts b/src/astronomy/solar.ts new file mode 100644 index 000000000..59e46f03d --- /dev/null +++ b/src/astronomy/solar.ts @@ -0,0 +1,22 @@ +/** Solar module — tsb analytics library. */ + +/** Options for Solar. */ +export interface SolarOptions { tol?: number; maxIter?: number; } + +/** Result from Solar. */ +export interface SolarResult { values: number[]; converged: boolean; } + +/** Compute Solar. */ +export function computeSolar(data: number[], opts: SolarOptions = {}): SolarResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSolar }; diff --git a/src/astronomy/source_extraction.ts b/src/astronomy/source_extraction.ts new file mode 100644 index 000000000..e6db68f26 --- /dev/null +++ b/src/astronomy/source_extraction.ts @@ -0,0 +1,22 @@ +/** Source Extraction module — tsb analytics library. */ + +/** Options for Source Extraction. */ +export interface SourceExtractionOptions { tol?: number; maxIter?: number; } + +/** Result from Source Extraction. */ +export interface SourceExtractionResult { values: number[]; converged: boolean; } + +/** Compute Source Extraction. */ +export function computeSourceExtraction(data: number[], opts: SourceExtractionOptions = {}): SourceExtractionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSourceExtraction }; diff --git a/src/astronomy/sparse.ts b/src/astronomy/sparse.ts new file mode 100644 index 000000000..842386e2f --- /dev/null +++ b/src/astronomy/sparse.ts @@ -0,0 +1,15 @@ +/** Astronomy Sparse module — tsb analytics library. */ +export interface Astronomy sparseOptions { tol?: number; maxIter?: number; } +export interface Astronomy sparseResult { values: number[]; converged: boolean; } +export function computeAstronomy sparse(data: number[], opts: Astronomy sparseOptions = {}): Astronomy sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy sparse }; diff --git a/src/astronomy/spectroscopy.ts b/src/astronomy/spectroscopy.ts new file mode 100644 index 000000000..e1af4c92e --- /dev/null +++ b/src/astronomy/spectroscopy.ts @@ -0,0 +1,22 @@ +/** Spectroscopy module — tsb analytics library. */ + +/** Options for Spectroscopy. */ +export interface SpectroscopyOptions { tol?: number; maxIter?: number; } + +/** Result from Spectroscopy. */ +export interface SpectroscopyResult { values: number[]; converged: boolean; } + +/** Compute Spectroscopy. */ +export function computeSpectroscopy(data: number[], opts: SpectroscopyOptions = {}): SpectroscopyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSpectroscopy }; diff --git a/src/astronomy/stable.ts b/src/astronomy/stable.ts new file mode 100644 index 000000000..111b7c16e --- /dev/null +++ b/src/astronomy/stable.ts @@ -0,0 +1,15 @@ +/** Astronomy Stable module — tsb analytics library. */ +export interface Astronomy stableOptions { tol?: number; maxIter?: number; } +export interface Astronomy stableResult { values: number[]; converged: boolean; } +export function computeAstronomy stable(data: number[], opts: Astronomy stableOptions = {}): Astronomy stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy stable }; diff --git a/src/astronomy/stellar.ts b/src/astronomy/stellar.ts new file mode 100644 index 000000000..82fceb885 --- /dev/null +++ b/src/astronomy/stellar.ts @@ -0,0 +1,22 @@ +/** Stellar module — tsb analytics library. */ + +/** Options for Stellar. */ +export interface StellarOptions { tol?: number; maxIter?: number; } + +/** Result from Stellar. */ +export interface StellarResult { values: number[]; converged: boolean; } + +/** Compute Stellar. */ +export function computeStellar(data: number[], opts: StellarOptions = {}): StellarResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeStellar }; diff --git a/src/astronomy/streaming.ts b/src/astronomy/streaming.ts new file mode 100644 index 000000000..92d8d45de --- /dev/null +++ b/src/astronomy/streaming.ts @@ -0,0 +1,15 @@ +/** Astronomy Streaming module — tsb analytics library. */ +export interface Astronomy streamingOptions { tol?: number; maxIter?: number; } +export interface Astronomy streamingResult { values: number[]; converged: boolean; } +export function computeAstronomy streaming(data: number[], opts: Astronomy streamingOptions = {}): Astronomy streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy streaming }; diff --git a/src/astronomy/supernova.ts b/src/astronomy/supernova.ts new file mode 100644 index 000000000..d1a781d80 --- /dev/null +++ b/src/astronomy/supernova.ts @@ -0,0 +1,22 @@ +/** Supernova module — tsb analytics library. */ + +/** Options for Supernova. */ +export interface SupernovaOptions { tol?: number; maxIter?: number; } + +/** Result from Supernova. */ +export interface SupernovaResult { values: number[]; converged: boolean; } + +/** Compute Supernova. */ +export function computeSupernova(data: number[], opts: SupernovaOptions = {}): SupernovaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSupernova }; diff --git a/src/astronomy/survey_astro.ts b/src/astronomy/survey_astro.ts new file mode 100644 index 000000000..58ea6309f --- /dev/null +++ b/src/astronomy/survey_astro.ts @@ -0,0 +1,22 @@ +/** Survey Astro module — tsb analytics library. */ + +/** Options for Survey Astro. */ +export interface SurveyAstroOptions { tol?: number; maxIter?: number; } + +/** Result from Survey Astro. */ +export interface SurveyAstroResult { values: number[]; converged: boolean; } + +/** Compute Survey Astro. */ +export function computeSurveyAstro(data: number[], opts: SurveyAstroOptions = {}): SurveyAstroResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSurveyAstro }; diff --git a/src/astronomy/transient.ts b/src/astronomy/transient.ts new file mode 100644 index 000000000..681948001 --- /dev/null +++ b/src/astronomy/transient.ts @@ -0,0 +1,22 @@ +/** Transient module — tsb analytics library. */ + +/** Options for Transient. */ +export interface TransientOptions { tol?: number; maxIter?: number; } + +/** Result from Transient. */ +export interface TransientResult { values: number[]; converged: boolean; } + +/** Compute Transient. */ +export function computeTransient(data: number[], opts: TransientOptions = {}): TransientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeTransient }; diff --git a/src/astronomy/v2.ts b/src/astronomy/v2.ts new file mode 100644 index 000000000..7ee9dbfd1 --- /dev/null +++ b/src/astronomy/v2.ts @@ -0,0 +1,15 @@ +/** Astronomy V2 module — tsb analytics library. */ +export interface Astronomy v2Options { tol?: number; maxIter?: number; } +export interface Astronomy v2Result { values: number[]; converged: boolean; } +export function computeAstronomy v2(data: number[], opts: Astronomy v2Options = {}): Astronomy v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy v2 }; diff --git a/src/astronomy/v3.ts b/src/astronomy/v3.ts new file mode 100644 index 000000000..9edaf5b9d --- /dev/null +++ b/src/astronomy/v3.ts @@ -0,0 +1,15 @@ +/** Astronomy V3 module — tsb analytics library. */ +export interface Astronomy v3Options { tol?: number; maxIter?: number; } +export interface Astronomy v3Result { values: number[]; converged: boolean; } +export function computeAstronomy v3(data: number[], opts: Astronomy v3Options = {}): Astronomy v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy v3 }; diff --git a/src/astronomy/variability.ts b/src/astronomy/variability.ts new file mode 100644 index 000000000..3a97b30da --- /dev/null +++ b/src/astronomy/variability.ts @@ -0,0 +1,22 @@ +/** Variability module — tsb analytics library. */ + +/** Options for Variability. */ +export interface VariabilityOptions { tol?: number; maxIter?: number; } + +/** Result from Variability. */ +export interface VariabilityResult { values: number[]; converged: boolean; } + +/** Compute Variability. */ +export function computeVariability(data: number[], opts: VariabilityOptions = {}): VariabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeVariability }; diff --git a/src/astronomy/wasm.ts b/src/astronomy/wasm.ts new file mode 100644 index 000000000..977ef323c --- /dev/null +++ b/src/astronomy/wasm.ts @@ -0,0 +1,15 @@ +/** Astronomy Wasm module — tsb analytics library. */ +export interface Astronomy wasmOptions { tol?: number; maxIter?: number; } +export interface Astronomy wasmResult { values: number[]; converged: boolean; } +export function computeAstronomy wasm(data: number[], opts: Astronomy wasmOptions = {}): Astronomy wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy wasm }; diff --git a/src/astronomy/white_dwarf.ts b/src/astronomy/white_dwarf.ts new file mode 100644 index 000000000..150f1247b --- /dev/null +++ b/src/astronomy/white_dwarf.ts @@ -0,0 +1,22 @@ +/** White Dwarf module — tsb analytics library. */ + +/** Options for White Dwarf. */ +export interface WhiteDwarfOptions { tol?: number; maxIter?: number; } + +/** Result from White Dwarf. */ +export interface WhiteDwarfResult { values: number[]; converged: boolean; } + +/** Compute White Dwarf. */ +export function computeWhiteDwarf(data: number[], opts: WhiteDwarfOptions = {}): WhiteDwarfResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeWhiteDwarf }; diff --git a/src/astronomy/xlarge.ts b/src/astronomy/xlarge.ts new file mode 100644 index 000000000..2371bf567 --- /dev/null +++ b/src/astronomy/xlarge.ts @@ -0,0 +1,15 @@ +/** Astronomy Xlarge module — tsb analytics library. */ +export interface Astronomy xlargeOptions { tol?: number; maxIter?: number; } +export interface Astronomy xlargeResult { values: number[]; converged: boolean; } +export function computeAstronomy xlarge(data: number[], opts: Astronomy xlargeOptions = {}): Astronomy xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeAstronomy xlarge }; diff --git a/src/bacteriology/adaptation.ts b/src/bacteriology/adaptation.ts new file mode 100644 index 000000000..03515b605 --- /dev/null +++ b/src/bacteriology/adaptation.ts @@ -0,0 +1,14 @@ +/** bacteriology adaptation module — tsb analytics library. */ +export interface BacteriologyAdaptationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyAdaptationResult { values: number[]; converged: boolean; } +export function computeBacteriologyAdaptation(data: number[], opts: BacteriologyAdaptationOptions = {}): BacteriologyAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyAdaptation }; diff --git a/src/bacteriology/aggregation.ts b/src/bacteriology/aggregation.ts new file mode 100644 index 000000000..10ab15209 --- /dev/null +++ b/src/bacteriology/aggregation.ts @@ -0,0 +1,14 @@ +/** bacteriology aggregation module — tsb analytics library. */ +export interface BacteriologyAggregationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyAggregationResult { values: number[]; converged: boolean; } +export function computeBacteriologyAggregation(data: number[], opts: BacteriologyAggregationOptions = {}): BacteriologyAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyAggregation }; diff --git a/src/bacteriology/algebra.ts b/src/bacteriology/algebra.ts new file mode 100644 index 000000000..4d88c0caf --- /dev/null +++ b/src/bacteriology/algebra.ts @@ -0,0 +1,14 @@ +/** bacteriology algebra module — tsb analytics library. */ +export interface BacteriologyAlgebraOptions { tol?: number; maxIter?: number; } +export interface BacteriologyAlgebraResult { values: number[]; converged: boolean; } +export function computeBacteriologyAlgebra(data: number[], opts: BacteriologyAlgebraOptions = {}): BacteriologyAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyAlgebra }; diff --git a/src/bacteriology/alignment.ts b/src/bacteriology/alignment.ts new file mode 100644 index 000000000..ec51a543e --- /dev/null +++ b/src/bacteriology/alignment.ts @@ -0,0 +1,14 @@ +/** bacteriology alignment module — tsb analytics library. */ +export interface BacteriologyAlignmentOptions { tol?: number; maxIter?: number; } +export interface BacteriologyAlignmentResult { values: number[]; converged: boolean; } +export function computeBacteriologyAlignment(data: number[], opts: BacteriologyAlignmentOptions = {}): BacteriologyAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyAlignment }; diff --git a/src/bacteriology/analysis.ts b/src/bacteriology/analysis.ts new file mode 100644 index 000000000..e7938041a --- /dev/null +++ b/src/bacteriology/analysis.ts @@ -0,0 +1,14 @@ +/** bacteriology analysis module — tsb analytics library. */ +export interface BacteriologyAnalysisOptions { tol?: number; maxIter?: number; } +export interface BacteriologyAnalysisResult { values: number[]; converged: boolean; } +export function computeBacteriologyAnalysis(data: number[], opts: BacteriologyAnalysisOptions = {}): BacteriologyAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyAnalysis }; diff --git a/src/bacteriology/augmentation.ts b/src/bacteriology/augmentation.ts new file mode 100644 index 000000000..22f9339df --- /dev/null +++ b/src/bacteriology/augmentation.ts @@ -0,0 +1,14 @@ +/** bacteriology augmentation module — tsb analytics library. */ +export interface BacteriologyAugmentationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyAugmentationResult { values: number[]; converged: boolean; } +export function computeBacteriologyAugmentation(data: number[], opts: BacteriologyAugmentationOptions = {}): BacteriologyAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyAugmentation }; diff --git a/src/bacteriology/bagging.ts b/src/bacteriology/bagging.ts new file mode 100644 index 000000000..aedccf369 --- /dev/null +++ b/src/bacteriology/bagging.ts @@ -0,0 +1,14 @@ +/** bacteriology bagging module — tsb analytics library. */ +export interface BacteriologyBaggingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyBaggingResult { values: number[]; converged: boolean; } +export function computeBacteriologyBagging(data: number[], opts: BacteriologyBaggingOptions = {}): BacteriologyBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyBagging }; diff --git a/src/bacteriology/basis.ts b/src/bacteriology/basis.ts new file mode 100644 index 000000000..884abcb07 --- /dev/null +++ b/src/bacteriology/basis.ts @@ -0,0 +1,14 @@ +/** bacteriology basis module — tsb analytics library. */ +export interface BacteriologyBasisOptions { tol?: number; maxIter?: number; } +export interface BacteriologyBasisResult { values: number[]; converged: boolean; } +export function computeBacteriologyBasis(data: number[], opts: BacteriologyBasisOptions = {}): BacteriologyBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyBasis }; diff --git a/src/bacteriology/benchmarking.ts b/src/bacteriology/benchmarking.ts new file mode 100644 index 000000000..3390f42f5 --- /dev/null +++ b/src/bacteriology/benchmarking.ts @@ -0,0 +1,14 @@ +/** bacteriology benchmarking module — tsb analytics library. */ +export interface BacteriologyBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyBenchmarkingResult { values: number[]; converged: boolean; } +export function computeBacteriologyBenchmarking(data: number[], opts: BacteriologyBenchmarkingOptions = {}): BacteriologyBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyBenchmarking }; diff --git a/src/bacteriology/blending.ts b/src/bacteriology/blending.ts new file mode 100644 index 000000000..d16e198cd --- /dev/null +++ b/src/bacteriology/blending.ts @@ -0,0 +1,14 @@ +/** bacteriology blending module — tsb analytics library. */ +export interface BacteriologyBlendingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyBlendingResult { values: number[]; converged: boolean; } +export function computeBacteriologyBlending(data: number[], opts: BacteriologyBlendingOptions = {}): BacteriologyBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyBlending }; diff --git a/src/bacteriology/boosting.ts b/src/bacteriology/boosting.ts new file mode 100644 index 000000000..c7b8885d8 --- /dev/null +++ b/src/bacteriology/boosting.ts @@ -0,0 +1,14 @@ +/** bacteriology boosting module — tsb analytics library. */ +export interface BacteriologyBoostingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyBoostingResult { values: number[]; converged: boolean; } +export function computeBacteriologyBoosting(data: number[], opts: BacteriologyBoostingOptions = {}): BacteriologyBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyBoosting }; diff --git a/src/bacteriology/bootstrap.ts b/src/bacteriology/bootstrap.ts new file mode 100644 index 000000000..be3d96719 --- /dev/null +++ b/src/bacteriology/bootstrap.ts @@ -0,0 +1,14 @@ +/** bacteriology bootstrap module — tsb analytics library. */ +export interface BacteriologyBootstrapOptions { tol?: number; maxIter?: number; } +export interface BacteriologyBootstrapResult { values: number[]; converged: boolean; } +export function computeBacteriologyBootstrap(data: number[], opts: BacteriologyBootstrapOptions = {}): BacteriologyBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyBootstrap }; diff --git a/src/bacteriology/calculus.ts b/src/bacteriology/calculus.ts new file mode 100644 index 000000000..c78873a22 --- /dev/null +++ b/src/bacteriology/calculus.ts @@ -0,0 +1,14 @@ +/** bacteriology calculus module — tsb analytics library. */ +export interface BacteriologyCalculusOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCalculusResult { values: number[]; converged: boolean; } +export function computeBacteriologyCalculus(data: number[], opts: BacteriologyCalculusOptions = {}): BacteriologyCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCalculus }; diff --git a/src/bacteriology/calibration.ts b/src/bacteriology/calibration.ts new file mode 100644 index 000000000..bc9617463 --- /dev/null +++ b/src/bacteriology/calibration.ts @@ -0,0 +1,14 @@ +/** bacteriology calibration module — tsb analytics library. */ +export interface BacteriologyCalibrationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCalibrationResult { values: number[]; converged: boolean; } +export function computeBacteriologyCalibration(data: number[], opts: BacteriologyCalibrationOptions = {}): BacteriologyCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCalibration }; diff --git a/src/bacteriology/characterization.ts b/src/bacteriology/characterization.ts new file mode 100644 index 000000000..11889405d --- /dev/null +++ b/src/bacteriology/characterization.ts @@ -0,0 +1,14 @@ +/** bacteriology characterization module — tsb analytics library. */ +export interface BacteriologyCharacterizationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCharacterizationResult { values: number[]; converged: boolean; } +export function computeBacteriologyCharacterization(data: number[], opts: BacteriologyCharacterizationOptions = {}): BacteriologyCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCharacterization }; diff --git a/src/bacteriology/classification.ts b/src/bacteriology/classification.ts new file mode 100644 index 000000000..a465dbebf --- /dev/null +++ b/src/bacteriology/classification.ts @@ -0,0 +1,14 @@ +/** bacteriology classification module — tsb analytics library. */ +export interface BacteriologyClassificationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyClassificationResult { values: number[]; converged: boolean; } +export function computeBacteriologyClassification(data: number[], opts: BacteriologyClassificationOptions = {}): BacteriologyClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyClassification }; diff --git a/src/bacteriology/clustering.ts b/src/bacteriology/clustering.ts new file mode 100644 index 000000000..75f095a37 --- /dev/null +++ b/src/bacteriology/clustering.ts @@ -0,0 +1,14 @@ +/** bacteriology clustering module — tsb analytics library. */ +export interface BacteriologyClusteringOptions { tol?: number; maxIter?: number; } +export interface BacteriologyClusteringResult { values: number[]; converged: boolean; } +export function computeBacteriologyClustering(data: number[], opts: BacteriologyClusteringOptions = {}): BacteriologyClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyClustering }; diff --git a/src/bacteriology/compression.ts b/src/bacteriology/compression.ts new file mode 100644 index 000000000..40c7e6cf9 --- /dev/null +++ b/src/bacteriology/compression.ts @@ -0,0 +1,14 @@ +/** bacteriology compression module — tsb analytics library. */ +export interface BacteriologyCompressionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCompressionResult { values: number[]; converged: boolean; } +export function computeBacteriologyCompression(data: number[], opts: BacteriologyCompressionOptions = {}): BacteriologyCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCompression }; diff --git a/src/bacteriology/continuous.ts b/src/bacteriology/continuous.ts new file mode 100644 index 000000000..24e314e28 --- /dev/null +++ b/src/bacteriology/continuous.ts @@ -0,0 +1,14 @@ +/** bacteriology continuous module — tsb analytics library. */ +export interface BacteriologyContinuousOptions { tol?: number; maxIter?: number; } +export interface BacteriologyContinuousResult { values: number[]; converged: boolean; } +export function computeBacteriologyContinuous(data: number[], opts: BacteriologyContinuousOptions = {}): BacteriologyContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyContinuous }; diff --git a/src/bacteriology/control.ts b/src/bacteriology/control.ts new file mode 100644 index 000000000..22d37137d --- /dev/null +++ b/src/bacteriology/control.ts @@ -0,0 +1,14 @@ +/** bacteriology control module — tsb analytics library. */ +export interface BacteriologyControlOptions { tol?: number; maxIter?: number; } +export interface BacteriologyControlResult { values: number[]; converged: boolean; } +export function computeBacteriologyControl(data: number[], opts: BacteriologyControlOptions = {}): BacteriologyControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyControl }; diff --git a/src/bacteriology/convergence.ts b/src/bacteriology/convergence.ts new file mode 100644 index 000000000..e29c36cf5 --- /dev/null +++ b/src/bacteriology/convergence.ts @@ -0,0 +1,14 @@ +/** bacteriology convergence module — tsb analytics library. */ +export interface BacteriologyConvergenceOptions { tol?: number; maxIter?: number; } +export interface BacteriologyConvergenceResult { values: number[]; converged: boolean; } +export function computeBacteriologyConvergence(data: number[], opts: BacteriologyConvergenceOptions = {}): BacteriologyConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyConvergence }; diff --git a/src/bacteriology/convex.ts b/src/bacteriology/convex.ts new file mode 100644 index 000000000..488487d7b --- /dev/null +++ b/src/bacteriology/convex.ts @@ -0,0 +1,14 @@ +/** bacteriology convex module — tsb analytics library. */ +export interface BacteriologyConvexOptions { tol?: number; maxIter?: number; } +export interface BacteriologyConvexResult { values: number[]; converged: boolean; } +export function computeBacteriologyConvex(data: number[], opts: BacteriologyConvexOptions = {}): BacteriologyConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyConvex }; diff --git a/src/bacteriology/correlation.ts b/src/bacteriology/correlation.ts new file mode 100644 index 000000000..01f57c2d4 --- /dev/null +++ b/src/bacteriology/correlation.ts @@ -0,0 +1,14 @@ +/** bacteriology correlation module — tsb analytics library. */ +export interface BacteriologyCorrelationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCorrelationResult { values: number[]; converged: boolean; } +export function computeBacteriologyCorrelation(data: number[], opts: BacteriologyCorrelationOptions = {}): BacteriologyCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCorrelation }; diff --git a/src/bacteriology/covariance.ts b/src/bacteriology/covariance.ts new file mode 100644 index 000000000..f111057da --- /dev/null +++ b/src/bacteriology/covariance.ts @@ -0,0 +1,14 @@ +/** bacteriology covariance module — tsb analytics library. */ +export interface BacteriologyCovarianceOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCovarianceResult { values: number[]; converged: boolean; } +export function computeBacteriologyCovariance(data: number[], opts: BacteriologyCovarianceOptions = {}): BacteriologyCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCovariance }; diff --git a/src/bacteriology/cross_validation.ts b/src/bacteriology/cross_validation.ts new file mode 100644 index 000000000..5cf594fa2 --- /dev/null +++ b/src/bacteriology/cross_validation.ts @@ -0,0 +1,14 @@ +/** bacteriology cross_validation module — tsb analytics library. */ +export interface BacteriologyCrossValidationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyCrossValidationResult { values: number[]; converged: boolean; } +export function computeBacteriologyCrossValidation(data: number[], opts: BacteriologyCrossValidationOptions = {}): BacteriologyCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyCrossValidation }; diff --git a/src/bacteriology/decoding.ts b/src/bacteriology/decoding.ts new file mode 100644 index 000000000..e685a55d4 --- /dev/null +++ b/src/bacteriology/decoding.ts @@ -0,0 +1,14 @@ +/** bacteriology decoding module — tsb analytics library. */ +export interface BacteriologyDecodingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDecodingResult { values: number[]; converged: boolean; } +export function computeBacteriologyDecoding(data: number[], opts: BacteriologyDecodingOptions = {}): BacteriologyDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDecoding }; diff --git a/src/bacteriology/decomposition.ts b/src/bacteriology/decomposition.ts new file mode 100644 index 000000000..5e73a3767 --- /dev/null +++ b/src/bacteriology/decomposition.ts @@ -0,0 +1,14 @@ +/** bacteriology decomposition module — tsb analytics library. */ +export interface BacteriologyDecompositionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDecompositionResult { values: number[]; converged: boolean; } +export function computeBacteriologyDecomposition(data: number[], opts: BacteriologyDecompositionOptions = {}): BacteriologyDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDecomposition }; diff --git a/src/bacteriology/detection.ts b/src/bacteriology/detection.ts new file mode 100644 index 000000000..02289071a --- /dev/null +++ b/src/bacteriology/detection.ts @@ -0,0 +1,14 @@ +/** bacteriology detection module — tsb analytics library. */ +export interface BacteriologyDetectionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDetectionResult { values: number[]; converged: boolean; } +export function computeBacteriologyDetection(data: number[], opts: BacteriologyDetectionOptions = {}): BacteriologyDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDetection }; diff --git a/src/bacteriology/deterministic.ts b/src/bacteriology/deterministic.ts new file mode 100644 index 000000000..6252cee34 --- /dev/null +++ b/src/bacteriology/deterministic.ts @@ -0,0 +1,14 @@ +/** bacteriology deterministic module — tsb analytics library. */ +export interface BacteriologyDeterministicOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDeterministicResult { values: number[]; converged: boolean; } +export function computeBacteriologyDeterministic(data: number[], opts: BacteriologyDeterministicOptions = {}): BacteriologyDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDeterministic }; diff --git a/src/bacteriology/diagnostics.ts b/src/bacteriology/diagnostics.ts new file mode 100644 index 000000000..9bc987155 --- /dev/null +++ b/src/bacteriology/diagnostics.ts @@ -0,0 +1,14 @@ +/** bacteriology diagnostics module — tsb analytics library. */ +export interface BacteriologyDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDiagnosticsResult { values: number[]; converged: boolean; } +export function computeBacteriologyDiagnostics(data: number[], opts: BacteriologyDiagnosticsOptions = {}): BacteriologyDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDiagnostics }; diff --git a/src/bacteriology/differential.ts b/src/bacteriology/differential.ts new file mode 100644 index 000000000..60616e571 --- /dev/null +++ b/src/bacteriology/differential.ts @@ -0,0 +1,14 @@ +/** bacteriology differential module — tsb analytics library. */ +export interface BacteriologyDifferentialOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDifferentialResult { values: number[]; converged: boolean; } +export function computeBacteriologyDifferential(data: number[], opts: BacteriologyDifferentialOptions = {}): BacteriologyDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDifferential }; diff --git a/src/bacteriology/discrete.ts b/src/bacteriology/discrete.ts new file mode 100644 index 000000000..ccba817de --- /dev/null +++ b/src/bacteriology/discrete.ts @@ -0,0 +1,14 @@ +/** bacteriology discrete module — tsb analytics library. */ +export interface BacteriologyDiscreteOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDiscreteResult { values: number[]; converged: boolean; } +export function computeBacteriologyDiscrete(data: number[], opts: BacteriologyDiscreteOptions = {}): BacteriologyDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDiscrete }; diff --git a/src/bacteriology/distribution.ts b/src/bacteriology/distribution.ts new file mode 100644 index 000000000..82405eeee --- /dev/null +++ b/src/bacteriology/distribution.ts @@ -0,0 +1,14 @@ +/** bacteriology distribution module — tsb analytics library. */ +export interface BacteriologyDistributionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDistributionResult { values: number[]; converged: boolean; } +export function computeBacteriologyDistribution(data: number[], opts: BacteriologyDistributionOptions = {}): BacteriologyDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDistribution }; diff --git a/src/bacteriology/dynamic.ts b/src/bacteriology/dynamic.ts new file mode 100644 index 000000000..dadcb80e6 --- /dev/null +++ b/src/bacteriology/dynamic.ts @@ -0,0 +1,14 @@ +/** bacteriology dynamic module — tsb analytics library. */ +export interface BacteriologyDynamicOptions { tol?: number; maxIter?: number; } +export interface BacteriologyDynamicResult { values: number[]; converged: boolean; } +export function computeBacteriologyDynamic(data: number[], opts: BacteriologyDynamicOptions = {}): BacteriologyDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyDynamic }; diff --git a/src/bacteriology/embedding.ts b/src/bacteriology/embedding.ts new file mode 100644 index 000000000..d3a5a4d7a --- /dev/null +++ b/src/bacteriology/embedding.ts @@ -0,0 +1,14 @@ +/** bacteriology embedding module — tsb analytics library. */ +export interface BacteriologyEmbeddingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyEmbeddingResult { values: number[]; converged: boolean; } +export function computeBacteriologyEmbedding(data: number[], opts: BacteriologyEmbeddingOptions = {}): BacteriologyEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyEmbedding }; diff --git a/src/bacteriology/encoding.ts b/src/bacteriology/encoding.ts new file mode 100644 index 000000000..bb99e11b8 --- /dev/null +++ b/src/bacteriology/encoding.ts @@ -0,0 +1,14 @@ +/** bacteriology encoding module — tsb analytics library. */ +export interface BacteriologyEncodingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyEncodingResult { values: number[]; converged: boolean; } +export function computeBacteriologyEncoding(data: number[], opts: BacteriologyEncodingOptions = {}): BacteriologyEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyEncoding }; diff --git a/src/bacteriology/ensemble.ts b/src/bacteriology/ensemble.ts new file mode 100644 index 000000000..05487f384 --- /dev/null +++ b/src/bacteriology/ensemble.ts @@ -0,0 +1,14 @@ +/** bacteriology ensemble module — tsb analytics library. */ +export interface BacteriologyEnsembleOptions { tol?: number; maxIter?: number; } +export interface BacteriologyEnsembleResult { values: number[]; converged: boolean; } +export function computeBacteriologyEnsemble(data: number[], opts: BacteriologyEnsembleOptions = {}): BacteriologyEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyEnsemble }; diff --git a/src/bacteriology/estimation.ts b/src/bacteriology/estimation.ts new file mode 100644 index 000000000..234b0d2b4 --- /dev/null +++ b/src/bacteriology/estimation.ts @@ -0,0 +1,14 @@ +/** bacteriology estimation module — tsb analytics library. */ +export interface BacteriologyEstimationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyEstimationResult { values: number[]; converged: boolean; } +export function computeBacteriologyEstimation(data: number[], opts: BacteriologyEstimationOptions = {}): BacteriologyEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyEstimation }; diff --git a/src/bacteriology/evaluation.ts b/src/bacteriology/evaluation.ts new file mode 100644 index 000000000..bb2d5e718 --- /dev/null +++ b/src/bacteriology/evaluation.ts @@ -0,0 +1,14 @@ +/** bacteriology evaluation module — tsb analytics library. */ +export interface BacteriologyEvaluationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyEvaluationResult { values: number[]; converged: boolean; } +export function computeBacteriologyEvaluation(data: number[], opts: BacteriologyEvaluationOptions = {}): BacteriologyEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyEvaluation }; diff --git a/src/bacteriology/extrapolation.ts b/src/bacteriology/extrapolation.ts new file mode 100644 index 000000000..5a04b19d6 --- /dev/null +++ b/src/bacteriology/extrapolation.ts @@ -0,0 +1,14 @@ +/** bacteriology extrapolation module — tsb analytics library. */ +export interface BacteriologyExtrapolationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyExtrapolationResult { values: number[]; converged: boolean; } +export function computeBacteriologyExtrapolation(data: number[], opts: BacteriologyExtrapolationOptions = {}): BacteriologyExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyExtrapolation }; diff --git a/src/bacteriology/features.ts b/src/bacteriology/features.ts new file mode 100644 index 000000000..603a43d48 --- /dev/null +++ b/src/bacteriology/features.ts @@ -0,0 +1,14 @@ +/** bacteriology features module — tsb analytics library. */ +export interface BacteriologyFeaturesOptions { tol?: number; maxIter?: number; } +export interface BacteriologyFeaturesResult { values: number[]; converged: boolean; } +export function computeBacteriologyFeatures(data: number[], opts: BacteriologyFeaturesOptions = {}): BacteriologyFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyFeatures }; diff --git a/src/bacteriology/feedback.ts b/src/bacteriology/feedback.ts new file mode 100644 index 000000000..c34e34418 --- /dev/null +++ b/src/bacteriology/feedback.ts @@ -0,0 +1,14 @@ +/** bacteriology feedback module — tsb analytics library. */ +export interface BacteriologyFeedbackOptions { tol?: number; maxIter?: number; } +export interface BacteriologyFeedbackResult { values: number[]; converged: boolean; } +export function computeBacteriologyFeedback(data: number[], opts: BacteriologyFeedbackOptions = {}): BacteriologyFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyFeedback }; diff --git a/src/bacteriology/filtering.ts b/src/bacteriology/filtering.ts new file mode 100644 index 000000000..f93fb21f6 --- /dev/null +++ b/src/bacteriology/filtering.ts @@ -0,0 +1,14 @@ +/** bacteriology filtering module — tsb analytics library. */ +export interface BacteriologyFilteringOptions { tol?: number; maxIter?: number; } +export interface BacteriologyFilteringResult { values: number[]; converged: boolean; } +export function computeBacteriologyFiltering(data: number[], opts: BacteriologyFilteringOptions = {}): BacteriologyFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyFiltering }; diff --git a/src/bacteriology/fourier.ts b/src/bacteriology/fourier.ts new file mode 100644 index 000000000..577d563ca --- /dev/null +++ b/src/bacteriology/fourier.ts @@ -0,0 +1,14 @@ +/** bacteriology fourier module — tsb analytics library. */ +export interface BacteriologyFourierOptions { tol?: number; maxIter?: number; } +export interface BacteriologyFourierResult { values: number[]; converged: boolean; } +export function computeBacteriologyFourier(data: number[], opts: BacteriologyFourierOptions = {}): BacteriologyFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyFourier }; diff --git a/src/bacteriology/fusion.ts b/src/bacteriology/fusion.ts new file mode 100644 index 000000000..7eb16551d --- /dev/null +++ b/src/bacteriology/fusion.ts @@ -0,0 +1,14 @@ +/** bacteriology fusion module — tsb analytics library. */ +export interface BacteriologyFusionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyFusionResult { values: number[]; converged: boolean; } +export function computeBacteriologyFusion(data: number[], opts: BacteriologyFusionOptions = {}): BacteriologyFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyFusion }; diff --git a/src/bacteriology/generation.ts b/src/bacteriology/generation.ts new file mode 100644 index 000000000..f9db3834c --- /dev/null +++ b/src/bacteriology/generation.ts @@ -0,0 +1,14 @@ +/** bacteriology generation module — tsb analytics library. */ +export interface BacteriologyGenerationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyGenerationResult { values: number[]; converged: boolean; } +export function computeBacteriologyGeneration(data: number[], opts: BacteriologyGenerationOptions = {}): BacteriologyGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyGeneration }; diff --git a/src/bacteriology/geometry.ts b/src/bacteriology/geometry.ts new file mode 100644 index 000000000..393aa9140 --- /dev/null +++ b/src/bacteriology/geometry.ts @@ -0,0 +1,14 @@ +/** bacteriology geometry module — tsb analytics library. */ +export interface BacteriologyGeometryOptions { tol?: number; maxIter?: number; } +export interface BacteriologyGeometryResult { values: number[]; converged: boolean; } +export function computeBacteriologyGeometry(data: number[], opts: BacteriologyGeometryOptions = {}): BacteriologyGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyGeometry }; diff --git a/src/bacteriology/gradient.ts b/src/bacteriology/gradient.ts new file mode 100644 index 000000000..9a7fef89e --- /dev/null +++ b/src/bacteriology/gradient.ts @@ -0,0 +1,14 @@ +/** bacteriology gradient module — tsb analytics library. */ +export interface BacteriologyGradientOptions { tol?: number; maxIter?: number; } +export interface BacteriologyGradientResult { values: number[]; converged: boolean; } +export function computeBacteriologyGradient(data: number[], opts: BacteriologyGradientOptions = {}): BacteriologyGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyGradient }; diff --git a/src/bacteriology/hessian.ts b/src/bacteriology/hessian.ts new file mode 100644 index 000000000..76b287cb8 --- /dev/null +++ b/src/bacteriology/hessian.ts @@ -0,0 +1,14 @@ +/** bacteriology hessian module — tsb analytics library. */ +export interface BacteriologyHessianOptions { tol?: number; maxIter?: number; } +export interface BacteriologyHessianResult { values: number[]; converged: boolean; } +export function computeBacteriologyHessian(data: number[], opts: BacteriologyHessianOptions = {}): BacteriologyHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyHessian }; diff --git a/src/bacteriology/hypothesis.ts b/src/bacteriology/hypothesis.ts new file mode 100644 index 000000000..9afcb7f1d --- /dev/null +++ b/src/bacteriology/hypothesis.ts @@ -0,0 +1,14 @@ +/** bacteriology hypothesis module — tsb analytics library. */ +export interface BacteriologyHypothesisOptions { tol?: number; maxIter?: number; } +export interface BacteriologyHypothesisResult { values: number[]; converged: boolean; } +export function computeBacteriologyHypothesis(data: number[], opts: BacteriologyHypothesisOptions = {}): BacteriologyHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyHypothesis }; diff --git a/src/bacteriology/inference.ts b/src/bacteriology/inference.ts new file mode 100644 index 000000000..85d874271 --- /dev/null +++ b/src/bacteriology/inference.ts @@ -0,0 +1,14 @@ +/** bacteriology inference module — tsb analytics library. */ +export interface BacteriologyInferenceOptions { tol?: number; maxIter?: number; } +export interface BacteriologyInferenceResult { values: number[]; converged: boolean; } +export function computeBacteriologyInference(data: number[], opts: BacteriologyInferenceOptions = {}): BacteriologyInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyInference }; diff --git a/src/bacteriology/inference2.ts b/src/bacteriology/inference2.ts new file mode 100644 index 000000000..3a285e0a9 --- /dev/null +++ b/src/bacteriology/inference2.ts @@ -0,0 +1,14 @@ +/** bacteriology inference2 module — tsb analytics library. */ +export interface BacteriologyInferenceOptions { tol?: number; maxIter?: number; } +export interface BacteriologyInferenceResult { values: number[]; converged: boolean; } +export function computeBacteriologyInference(data: number[], opts: BacteriologyInferenceOptions = {}): BacteriologyInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyInference }; diff --git a/src/bacteriology/integral.ts b/src/bacteriology/integral.ts new file mode 100644 index 000000000..7f26e7075 --- /dev/null +++ b/src/bacteriology/integral.ts @@ -0,0 +1,14 @@ +/** bacteriology integral module — tsb analytics library. */ +export interface BacteriologyIntegralOptions { tol?: number; maxIter?: number; } +export interface BacteriologyIntegralResult { values: number[]; converged: boolean; } +export function computeBacteriologyIntegral(data: number[], opts: BacteriologyIntegralOptions = {}): BacteriologyIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyIntegral }; diff --git a/src/bacteriology/integration.ts b/src/bacteriology/integration.ts new file mode 100644 index 000000000..267d92324 --- /dev/null +++ b/src/bacteriology/integration.ts @@ -0,0 +1,14 @@ +/** bacteriology integration module — tsb analytics library. */ +export interface BacteriologyIntegrationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyIntegrationResult { values: number[]; converged: boolean; } +export function computeBacteriologyIntegration(data: number[], opts: BacteriologyIntegrationOptions = {}): BacteriologyIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyIntegration }; diff --git a/src/bacteriology/interpolation.ts b/src/bacteriology/interpolation.ts new file mode 100644 index 000000000..4ecb13884 --- /dev/null +++ b/src/bacteriology/interpolation.ts @@ -0,0 +1,14 @@ +/** bacteriology interpolation module — tsb analytics library. */ +export interface BacteriologyInterpolationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyInterpolationResult { values: number[]; converged: boolean; } +export function computeBacteriologyInterpolation(data: number[], opts: BacteriologyInterpolationOptions = {}): BacteriologyInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyInterpolation }; diff --git a/src/bacteriology/jacobian.ts b/src/bacteriology/jacobian.ts new file mode 100644 index 000000000..9596332d0 --- /dev/null +++ b/src/bacteriology/jacobian.ts @@ -0,0 +1,14 @@ +/** bacteriology jacobian module — tsb analytics library. */ +export interface BacteriologyJacobianOptions { tol?: number; maxIter?: number; } +export interface BacteriologyJacobianResult { values: number[]; converged: boolean; } +export function computeBacteriologyJacobian(data: number[], opts: BacteriologyJacobianOptions = {}): BacteriologyJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyJacobian }; diff --git a/src/bacteriology/kernel.ts b/src/bacteriology/kernel.ts new file mode 100644 index 000000000..5f31d6885 --- /dev/null +++ b/src/bacteriology/kernel.ts @@ -0,0 +1,14 @@ +/** bacteriology kernel module — tsb analytics library. */ +export interface BacteriologyKernelOptions { tol?: number; maxIter?: number; } +export interface BacteriologyKernelResult { values: number[]; converged: boolean; } +export function computeBacteriologyKernel(data: number[], opts: BacteriologyKernelOptions = {}): BacteriologyKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyKernel }; diff --git a/src/bacteriology/laplacian.ts b/src/bacteriology/laplacian.ts new file mode 100644 index 000000000..83895374e --- /dev/null +++ b/src/bacteriology/laplacian.ts @@ -0,0 +1,14 @@ +/** bacteriology laplacian module — tsb analytics library. */ +export interface BacteriologyLaplacianOptions { tol?: number; maxIter?: number; } +export interface BacteriologyLaplacianResult { values: number[]; converged: boolean; } +export function computeBacteriologyLaplacian(data: number[], opts: BacteriologyLaplacianOptions = {}): BacteriologyLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyLaplacian }; diff --git a/src/bacteriology/learning.ts b/src/bacteriology/learning.ts new file mode 100644 index 000000000..b5c1414ad --- /dev/null +++ b/src/bacteriology/learning.ts @@ -0,0 +1,14 @@ +/** bacteriology learning module — tsb analytics library. */ +export interface BacteriologyLearningOptions { tol?: number; maxIter?: number; } +export interface BacteriologyLearningResult { values: number[]; converged: boolean; } +export function computeBacteriologyLearning(data: number[], opts: BacteriologyLearningOptions = {}): BacteriologyLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyLearning }; diff --git a/src/bacteriology/linear.ts b/src/bacteriology/linear.ts new file mode 100644 index 000000000..3cf57113b --- /dev/null +++ b/src/bacteriology/linear.ts @@ -0,0 +1,14 @@ +/** bacteriology linear module — tsb analytics library. */ +export interface BacteriologyLinearOptions { tol?: number; maxIter?: number; } +export interface BacteriologyLinearResult { values: number[]; converged: boolean; } +export function computeBacteriologyLinear(data: number[], opts: BacteriologyLinearOptions = {}): BacteriologyLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyLinear }; diff --git a/src/bacteriology/manifold.ts b/src/bacteriology/manifold.ts new file mode 100644 index 000000000..9c1aae8dc --- /dev/null +++ b/src/bacteriology/manifold.ts @@ -0,0 +1,14 @@ +/** bacteriology manifold module — tsb analytics library. */ +export interface BacteriologyManifoldOptions { tol?: number; maxIter?: number; } +export interface BacteriologyManifoldResult { values: number[]; converged: boolean; } +export function computeBacteriologyManifold(data: number[], opts: BacteriologyManifoldOptions = {}): BacteriologyManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyManifold }; diff --git a/src/bacteriology/matching.ts b/src/bacteriology/matching.ts new file mode 100644 index 000000000..f30710643 --- /dev/null +++ b/src/bacteriology/matching.ts @@ -0,0 +1,14 @@ +/** bacteriology matching module — tsb analytics library. */ +export interface BacteriologyMatchingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyMatchingResult { values: number[]; converged: boolean; } +export function computeBacteriologyMatching(data: number[], opts: BacteriologyMatchingOptions = {}): BacteriologyMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyMatching }; diff --git a/src/bacteriology/measurement.ts b/src/bacteriology/measurement.ts new file mode 100644 index 000000000..f0c3b2e3a --- /dev/null +++ b/src/bacteriology/measurement.ts @@ -0,0 +1,14 @@ +/** bacteriology measurement module — tsb analytics library. */ +export interface BacteriologyMeasurementOptions { tol?: number; maxIter?: number; } +export interface BacteriologyMeasurementResult { values: number[]; converged: boolean; } +export function computeBacteriologyMeasurement(data: number[], opts: BacteriologyMeasurementOptions = {}): BacteriologyMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyMeasurement }; diff --git a/src/bacteriology/metrics.ts b/src/bacteriology/metrics.ts new file mode 100644 index 000000000..d36b23453 --- /dev/null +++ b/src/bacteriology/metrics.ts @@ -0,0 +1,14 @@ +/** bacteriology metrics module — tsb analytics library. */ +export interface BacteriologyMetricsOptions { tol?: number; maxIter?: number; } +export interface BacteriologyMetricsResult { values: number[]; converged: boolean; } +export function computeBacteriologyMetrics(data: number[], opts: BacteriologyMetricsOptions = {}): BacteriologyMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyMetrics }; diff --git a/src/bacteriology/modeling.ts b/src/bacteriology/modeling.ts new file mode 100644 index 000000000..13100db94 --- /dev/null +++ b/src/bacteriology/modeling.ts @@ -0,0 +1,14 @@ +/** bacteriology modeling module — tsb analytics library. */ +export interface BacteriologyModelingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyModelingResult { values: number[]; converged: boolean; } +export function computeBacteriologyModeling(data: number[], opts: BacteriologyModelingOptions = {}): BacteriologyModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyModeling }; diff --git a/src/bacteriology/monitoring.ts b/src/bacteriology/monitoring.ts new file mode 100644 index 000000000..1b3e5a00c --- /dev/null +++ b/src/bacteriology/monitoring.ts @@ -0,0 +1,14 @@ +/** bacteriology monitoring module — tsb analytics library. */ +export interface BacteriologyMonitoringOptions { tol?: number; maxIter?: number; } +export interface BacteriologyMonitoringResult { values: number[]; converged: boolean; } +export function computeBacteriologyMonitoring(data: number[], opts: BacteriologyMonitoringOptions = {}): BacteriologyMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyMonitoring }; diff --git a/src/bacteriology/nonlinear.ts b/src/bacteriology/nonlinear.ts new file mode 100644 index 000000000..7b55372ea --- /dev/null +++ b/src/bacteriology/nonlinear.ts @@ -0,0 +1,14 @@ +/** bacteriology nonlinear module — tsb analytics library. */ +export interface BacteriologyNonlinearOptions { tol?: number; maxIter?: number; } +export interface BacteriologyNonlinearResult { values: number[]; converged: boolean; } +export function computeBacteriologyNonlinear(data: number[], opts: BacteriologyNonlinearOptions = {}): BacteriologyNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyNonlinear }; diff --git a/src/bacteriology/normalization.ts b/src/bacteriology/normalization.ts new file mode 100644 index 000000000..d3a977162 --- /dev/null +++ b/src/bacteriology/normalization.ts @@ -0,0 +1,14 @@ +/** bacteriology normalization module — tsb analytics library. */ +export interface BacteriologyNormalizationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyNormalizationResult { values: number[]; converged: boolean; } +export function computeBacteriologyNormalization(data: number[], opts: BacteriologyNormalizationOptions = {}): BacteriologyNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyNormalization }; diff --git a/src/bacteriology/optimization.ts b/src/bacteriology/optimization.ts new file mode 100644 index 000000000..2bc96cfab --- /dev/null +++ b/src/bacteriology/optimization.ts @@ -0,0 +1,14 @@ +/** bacteriology optimization module — tsb analytics library. */ +export interface BacteriologyOptimizationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyOptimizationResult { values: number[]; converged: boolean; } +export function computeBacteriologyOptimization(data: number[], opts: BacteriologyOptimizationOptions = {}): BacteriologyOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyOptimization }; diff --git a/src/bacteriology/patterns.ts b/src/bacteriology/patterns.ts new file mode 100644 index 000000000..0f6bd8bf9 --- /dev/null +++ b/src/bacteriology/patterns.ts @@ -0,0 +1,14 @@ +/** bacteriology patterns module — tsb analytics library. */ +export interface BacteriologyPatternsOptions { tol?: number; maxIter?: number; } +export interface BacteriologyPatternsResult { values: number[]; converged: boolean; } +export function computeBacteriologyPatterns(data: number[], opts: BacteriologyPatternsOptions = {}): BacteriologyPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyPatterns }; diff --git a/src/bacteriology/permutation.ts b/src/bacteriology/permutation.ts new file mode 100644 index 000000000..2fb36d536 --- /dev/null +++ b/src/bacteriology/permutation.ts @@ -0,0 +1,14 @@ +/** bacteriology permutation module — tsb analytics library. */ +export interface BacteriologyPermutationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyPermutationResult { values: number[]; converged: boolean; } +export function computeBacteriologyPermutation(data: number[], opts: BacteriologyPermutationOptions = {}): BacteriologyPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyPermutation }; diff --git a/src/bacteriology/prediction.ts b/src/bacteriology/prediction.ts new file mode 100644 index 000000000..87bda315e --- /dev/null +++ b/src/bacteriology/prediction.ts @@ -0,0 +1,14 @@ +/** bacteriology prediction module — tsb analytics library. */ +export interface BacteriologyPredictionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyPredictionResult { values: number[]; converged: boolean; } +export function computeBacteriologyPrediction(data: number[], opts: BacteriologyPredictionOptions = {}): BacteriologyPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyPrediction }; diff --git a/src/bacteriology/processing.ts b/src/bacteriology/processing.ts new file mode 100644 index 000000000..8d9f30d65 --- /dev/null +++ b/src/bacteriology/processing.ts @@ -0,0 +1,14 @@ +/** bacteriology processing module — tsb analytics library. */ +export interface BacteriologyProcessingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyProcessingResult { values: number[]; converged: boolean; } +export function computeBacteriologyProcessing(data: number[], opts: BacteriologyProcessingOptions = {}): BacteriologyProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyProcessing }; diff --git a/src/bacteriology/profiling.ts b/src/bacteriology/profiling.ts new file mode 100644 index 000000000..905b84c5b --- /dev/null +++ b/src/bacteriology/profiling.ts @@ -0,0 +1,14 @@ +/** bacteriology profiling module — tsb analytics library. */ +export interface BacteriologyProfilingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyProfilingResult { values: number[]; converged: boolean; } +export function computeBacteriologyProfiling(data: number[], opts: BacteriologyProfilingOptions = {}): BacteriologyProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyProfiling }; diff --git a/src/bacteriology/projection.ts b/src/bacteriology/projection.ts new file mode 100644 index 000000000..79d189aa2 --- /dev/null +++ b/src/bacteriology/projection.ts @@ -0,0 +1,14 @@ +/** bacteriology projection module — tsb analytics library. */ +export interface BacteriologyProjectionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyProjectionResult { values: number[]; converged: boolean; } +export function computeBacteriologyProjection(data: number[], opts: BacteriologyProjectionOptions = {}): BacteriologyProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyProjection }; diff --git a/src/bacteriology/ranking.ts b/src/bacteriology/ranking.ts new file mode 100644 index 000000000..1cd9a6ad3 --- /dev/null +++ b/src/bacteriology/ranking.ts @@ -0,0 +1,14 @@ +/** bacteriology ranking module — tsb analytics library. */ +export interface BacteriologyRankingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyRankingResult { values: number[]; converged: boolean; } +export function computeBacteriologyRanking(data: number[], opts: BacteriologyRankingOptions = {}): BacteriologyRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyRanking }; diff --git a/src/bacteriology/reconstruction.ts b/src/bacteriology/reconstruction.ts new file mode 100644 index 000000000..142f7fe74 --- /dev/null +++ b/src/bacteriology/reconstruction.ts @@ -0,0 +1,14 @@ +/** bacteriology reconstruction module — tsb analytics library. */ +export interface BacteriologyReconstructionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyReconstructionResult { values: number[]; converged: boolean; } +export function computeBacteriologyReconstruction(data: number[], opts: BacteriologyReconstructionOptions = {}): BacteriologyReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyReconstruction }; diff --git a/src/bacteriology/registration.ts b/src/bacteriology/registration.ts new file mode 100644 index 000000000..838652d31 --- /dev/null +++ b/src/bacteriology/registration.ts @@ -0,0 +1,14 @@ +/** bacteriology registration module — tsb analytics library. */ +export interface BacteriologyRegistrationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyRegistrationResult { values: number[]; converged: boolean; } +export function computeBacteriologyRegistration(data: number[], opts: BacteriologyRegistrationOptions = {}): BacteriologyRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyRegistration }; diff --git a/src/bacteriology/regression.ts b/src/bacteriology/regression.ts new file mode 100644 index 000000000..fd96febcc --- /dev/null +++ b/src/bacteriology/regression.ts @@ -0,0 +1,14 @@ +/** bacteriology regression module — tsb analytics library. */ +export interface BacteriologyRegressionOptions { tol?: number; maxIter?: number; } +export interface BacteriologyRegressionResult { values: number[]; converged: boolean; } +export function computeBacteriologyRegression(data: number[], opts: BacteriologyRegressionOptions = {}): BacteriologyRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyRegression }; diff --git a/src/bacteriology/regularization.ts b/src/bacteriology/regularization.ts new file mode 100644 index 000000000..9331540db --- /dev/null +++ b/src/bacteriology/regularization.ts @@ -0,0 +1,14 @@ +/** bacteriology regularization module — tsb analytics library. */ +export interface BacteriologyRegularizationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyRegularizationResult { values: number[]; converged: boolean; } +export function computeBacteriologyRegularization(data: number[], opts: BacteriologyRegularizationOptions = {}): BacteriologyRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyRegularization }; diff --git a/src/bacteriology/robustness.ts b/src/bacteriology/robustness.ts new file mode 100644 index 000000000..cf0e28fa6 --- /dev/null +++ b/src/bacteriology/robustness.ts @@ -0,0 +1,14 @@ +/** bacteriology robustness module — tsb analytics library. */ +export interface BacteriologyRobustnessOptions { tol?: number; maxIter?: number; } +export interface BacteriologyRobustnessResult { values: number[]; converged: boolean; } +export function computeBacteriologyRobustness(data: number[], opts: BacteriologyRobustnessOptions = {}): BacteriologyRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyRobustness }; diff --git a/src/bacteriology/sampling.ts b/src/bacteriology/sampling.ts new file mode 100644 index 000000000..145181069 --- /dev/null +++ b/src/bacteriology/sampling.ts @@ -0,0 +1,14 @@ +/** bacteriology sampling module — tsb analytics library. */ +export interface BacteriologySamplingOptions { tol?: number; maxIter?: number; } +export interface BacteriologySamplingResult { values: number[]; converged: boolean; } +export function computeBacteriologySampling(data: number[], opts: BacteriologySamplingOptions = {}): BacteriologySamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySampling }; diff --git a/src/bacteriology/sampling2.ts b/src/bacteriology/sampling2.ts new file mode 100644 index 000000000..96090b883 --- /dev/null +++ b/src/bacteriology/sampling2.ts @@ -0,0 +1,14 @@ +/** bacteriology sampling2 module — tsb analytics library. */ +export interface BacteriologySamplingOptions { tol?: number; maxIter?: number; } +export interface BacteriologySamplingResult { values: number[]; converged: boolean; } +export function computeBacteriologySampling(data: number[], opts: BacteriologySamplingOptions = {}): BacteriologySamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySampling }; diff --git a/src/bacteriology/scaling.ts b/src/bacteriology/scaling.ts new file mode 100644 index 000000000..3c8a324e6 --- /dev/null +++ b/src/bacteriology/scaling.ts @@ -0,0 +1,14 @@ +/** bacteriology scaling module — tsb analytics library. */ +export interface BacteriologyScalingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyScalingResult { values: number[]; converged: boolean; } +export function computeBacteriologyScaling(data: number[], opts: BacteriologyScalingOptions = {}): BacteriologyScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyScaling }; diff --git a/src/bacteriology/scoring.ts b/src/bacteriology/scoring.ts new file mode 100644 index 000000000..53c525520 --- /dev/null +++ b/src/bacteriology/scoring.ts @@ -0,0 +1,14 @@ +/** bacteriology scoring module — tsb analytics library. */ +export interface BacteriologyScoringOptions { tol?: number; maxIter?: number; } +export interface BacteriologyScoringResult { values: number[]; converged: boolean; } +export function computeBacteriologyScoring(data: number[], opts: BacteriologyScoringOptions = {}): BacteriologyScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyScoring }; diff --git a/src/bacteriology/segmentation.ts b/src/bacteriology/segmentation.ts new file mode 100644 index 000000000..9ff4dd8c2 --- /dev/null +++ b/src/bacteriology/segmentation.ts @@ -0,0 +1,14 @@ +/** bacteriology segmentation module — tsb analytics library. */ +export interface BacteriologySegmentationOptions { tol?: number; maxIter?: number; } +export interface BacteriologySegmentationResult { values: number[]; converged: boolean; } +export function computeBacteriologySegmentation(data: number[], opts: BacteriologySegmentationOptions = {}): BacteriologySegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySegmentation }; diff --git a/src/bacteriology/selection.ts b/src/bacteriology/selection.ts new file mode 100644 index 000000000..6abf73aeb --- /dev/null +++ b/src/bacteriology/selection.ts @@ -0,0 +1,14 @@ +/** bacteriology selection module — tsb analytics library. */ +export interface BacteriologySelectionOptions { tol?: number; maxIter?: number; } +export interface BacteriologySelectionResult { values: number[]; converged: boolean; } +export function computeBacteriologySelection(data: number[], opts: BacteriologySelectionOptions = {}): BacteriologySelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySelection }; diff --git a/src/bacteriology/sensitivity.ts b/src/bacteriology/sensitivity.ts new file mode 100644 index 000000000..bb1e07188 --- /dev/null +++ b/src/bacteriology/sensitivity.ts @@ -0,0 +1,14 @@ +/** bacteriology sensitivity module — tsb analytics library. */ +export interface BacteriologySensitivityOptions { tol?: number; maxIter?: number; } +export interface BacteriologySensitivityResult { values: number[]; converged: boolean; } +export function computeBacteriologySensitivity(data: number[], opts: BacteriologySensitivityOptions = {}): BacteriologySensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySensitivity }; diff --git a/src/bacteriology/simulation.ts b/src/bacteriology/simulation.ts new file mode 100644 index 000000000..faa7174ec --- /dev/null +++ b/src/bacteriology/simulation.ts @@ -0,0 +1,14 @@ +/** bacteriology simulation module — tsb analytics library. */ +export interface BacteriologySimulationOptions { tol?: number; maxIter?: number; } +export interface BacteriologySimulationResult { values: number[]; converged: boolean; } +export function computeBacteriologySimulation(data: number[], opts: BacteriologySimulationOptions = {}): BacteriologySimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySimulation }; diff --git a/src/bacteriology/smoothing.ts b/src/bacteriology/smoothing.ts new file mode 100644 index 000000000..9f8241a05 --- /dev/null +++ b/src/bacteriology/smoothing.ts @@ -0,0 +1,14 @@ +/** bacteriology smoothing module — tsb analytics library. */ +export interface BacteriologySmoothingOptions { tol?: number; maxIter?: number; } +export interface BacteriologySmoothingResult { values: number[]; converged: boolean; } +export function computeBacteriologySmoothing(data: number[], opts: BacteriologySmoothingOptions = {}): BacteriologySmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySmoothing }; diff --git a/src/bacteriology/stability.ts b/src/bacteriology/stability.ts new file mode 100644 index 000000000..2f8928287 --- /dev/null +++ b/src/bacteriology/stability.ts @@ -0,0 +1,14 @@ +/** bacteriology stability module — tsb analytics library. */ +export interface BacteriologyStabilityOptions { tol?: number; maxIter?: number; } +export interface BacteriologyStabilityResult { values: number[]; converged: boolean; } +export function computeBacteriologyStability(data: number[], opts: BacteriologyStabilityOptions = {}): BacteriologyStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyStability }; diff --git a/src/bacteriology/stacking.ts b/src/bacteriology/stacking.ts new file mode 100644 index 000000000..f740b17e0 --- /dev/null +++ b/src/bacteriology/stacking.ts @@ -0,0 +1,14 @@ +/** bacteriology stacking module — tsb analytics library. */ +export interface BacteriologyStackingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyStackingResult { values: number[]; converged: boolean; } +export function computeBacteriologyStacking(data: number[], opts: BacteriologyStackingOptions = {}): BacteriologyStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyStacking }; diff --git a/src/bacteriology/standardization.ts b/src/bacteriology/standardization.ts new file mode 100644 index 000000000..c902213af --- /dev/null +++ b/src/bacteriology/standardization.ts @@ -0,0 +1,14 @@ +/** bacteriology standardization module — tsb analytics library. */ +export interface BacteriologyStandardizationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyStandardizationResult { values: number[]; converged: boolean; } +export function computeBacteriologyStandardization(data: number[], opts: BacteriologyStandardizationOptions = {}): BacteriologyStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyStandardization }; diff --git a/src/bacteriology/static.ts b/src/bacteriology/static.ts new file mode 100644 index 000000000..0fffbbcc6 --- /dev/null +++ b/src/bacteriology/static.ts @@ -0,0 +1,14 @@ +/** bacteriology static module — tsb analytics library. */ +export interface BacteriologyStaticOptions { tol?: number; maxIter?: number; } +export interface BacteriologyStaticResult { values: number[]; converged: boolean; } +export function computeBacteriologyStatic(data: number[], opts: BacteriologyStaticOptions = {}): BacteriologyStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyStatic }; diff --git a/src/bacteriology/stochastic.ts b/src/bacteriology/stochastic.ts new file mode 100644 index 000000000..441dfe596 --- /dev/null +++ b/src/bacteriology/stochastic.ts @@ -0,0 +1,14 @@ +/** bacteriology stochastic module — tsb analytics library. */ +export interface BacteriologyStochasticOptions { tol?: number; maxIter?: number; } +export interface BacteriologyStochasticResult { values: number[]; converged: boolean; } +export function computeBacteriologyStochastic(data: number[], opts: BacteriologyStochasticOptions = {}): BacteriologyStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyStochastic }; diff --git a/src/bacteriology/synthesis.ts b/src/bacteriology/synthesis.ts new file mode 100644 index 000000000..0caddb91e --- /dev/null +++ b/src/bacteriology/synthesis.ts @@ -0,0 +1,14 @@ +/** bacteriology synthesis module — tsb analytics library. */ +export interface BacteriologySynthesisOptions { tol?: number; maxIter?: number; } +export interface BacteriologySynthesisResult { values: number[]; converged: boolean; } +export function computeBacteriologySynthesis(data: number[], opts: BacteriologySynthesisOptions = {}): BacteriologySynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologySynthesis }; diff --git a/src/bacteriology/topology.ts b/src/bacteriology/topology.ts new file mode 100644 index 000000000..5d4265275 --- /dev/null +++ b/src/bacteriology/topology.ts @@ -0,0 +1,14 @@ +/** bacteriology topology module — tsb analytics library. */ +export interface BacteriologyTopologyOptions { tol?: number; maxIter?: number; } +export interface BacteriologyTopologyResult { values: number[]; converged: boolean; } +export function computeBacteriologyTopology(data: number[], opts: BacteriologyTopologyOptions = {}): BacteriologyTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyTopology }; diff --git a/src/bacteriology/tracking.ts b/src/bacteriology/tracking.ts new file mode 100644 index 000000000..c68348fdd --- /dev/null +++ b/src/bacteriology/tracking.ts @@ -0,0 +1,14 @@ +/** bacteriology tracking module — tsb analytics library. */ +export interface BacteriologyTrackingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyTrackingResult { values: number[]; converged: boolean; } +export function computeBacteriologyTracking(data: number[], opts: BacteriologyTrackingOptions = {}): BacteriologyTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyTracking }; diff --git a/src/bacteriology/transform.ts b/src/bacteriology/transform.ts new file mode 100644 index 000000000..cfc188175 --- /dev/null +++ b/src/bacteriology/transform.ts @@ -0,0 +1,14 @@ +/** bacteriology transform module — tsb analytics library. */ +export interface BacteriologyTransformOptions { tol?: number; maxIter?: number; } +export interface BacteriologyTransformResult { values: number[]; converged: boolean; } +export function computeBacteriologyTransform(data: number[], opts: BacteriologyTransformOptions = {}): BacteriologyTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyTransform }; diff --git a/src/bacteriology/uncertainty.ts b/src/bacteriology/uncertainty.ts new file mode 100644 index 000000000..c518aca39 --- /dev/null +++ b/src/bacteriology/uncertainty.ts @@ -0,0 +1,14 @@ +/** bacteriology uncertainty module — tsb analytics library. */ +export interface BacteriologyUncertaintyOptions { tol?: number; maxIter?: number; } +export interface BacteriologyUncertaintyResult { values: number[]; converged: boolean; } +export function computeBacteriologyUncertainty(data: number[], opts: BacteriologyUncertaintyOptions = {}): BacteriologyUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyUncertainty }; diff --git a/src/bacteriology/validation.ts b/src/bacteriology/validation.ts new file mode 100644 index 000000000..39ffc6b1e --- /dev/null +++ b/src/bacteriology/validation.ts @@ -0,0 +1,14 @@ +/** bacteriology validation module — tsb analytics library. */ +export interface BacteriologyValidationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyValidationResult { values: number[]; converged: boolean; } +export function computeBacteriologyValidation(data: number[], opts: BacteriologyValidationOptions = {}): BacteriologyValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyValidation }; diff --git a/src/bacteriology/verification.ts b/src/bacteriology/verification.ts new file mode 100644 index 000000000..7e081757e --- /dev/null +++ b/src/bacteriology/verification.ts @@ -0,0 +1,14 @@ +/** bacteriology verification module — tsb analytics library. */ +export interface BacteriologyVerificationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyVerificationResult { values: number[]; converged: boolean; } +export function computeBacteriologyVerification(data: number[], opts: BacteriologyVerificationOptions = {}): BacteriologyVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyVerification }; diff --git a/src/bacteriology/visualization.ts b/src/bacteriology/visualization.ts new file mode 100644 index 000000000..1c953cf9d --- /dev/null +++ b/src/bacteriology/visualization.ts @@ -0,0 +1,14 @@ +/** bacteriology visualization module — tsb analytics library. */ +export interface BacteriologyVisualizationOptions { tol?: number; maxIter?: number; } +export interface BacteriologyVisualizationResult { values: number[]; converged: boolean; } +export function computeBacteriologyVisualization(data: number[], opts: BacteriologyVisualizationOptions = {}): BacteriologyVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyVisualization }; diff --git a/src/bacteriology/voting.ts b/src/bacteriology/voting.ts new file mode 100644 index 000000000..0e2f02f5f --- /dev/null +++ b/src/bacteriology/voting.ts @@ -0,0 +1,14 @@ +/** bacteriology voting module — tsb analytics library. */ +export interface BacteriologyVotingOptions { tol?: number; maxIter?: number; } +export interface BacteriologyVotingResult { values: number[]; converged: boolean; } +export function computeBacteriologyVoting(data: number[], opts: BacteriologyVotingOptions = {}): BacteriologyVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyVoting }; diff --git a/src/bacteriology/wavelet.ts b/src/bacteriology/wavelet.ts new file mode 100644 index 000000000..006a1b872 --- /dev/null +++ b/src/bacteriology/wavelet.ts @@ -0,0 +1,14 @@ +/** bacteriology wavelet module — tsb analytics library. */ +export interface BacteriologyWaveletOptions { tol?: number; maxIter?: number; } +export interface BacteriologyWaveletResult { values: number[]; converged: boolean; } +export function computeBacteriologyWavelet(data: number[], opts: BacteriologyWaveletOptions = {}): BacteriologyWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBacteriologyWavelet }; diff --git a/src/bayes/abc.ts b/src/bayes/abc.ts new file mode 100644 index 000000000..b83932422 --- /dev/null +++ b/src/bayes/abc.ts @@ -0,0 +1,22 @@ +/** Abc module — tsb analytics library. */ + +/** Options for Abc. */ +export interface AbcOptions { tol?: number; maxIter?: number; } + +/** Result from Abc. */ +export interface AbcResult { values: number[]; converged: boolean; } + +/** Compute Abc. */ +export function computeAbc(data: number[], opts: AbcOptions = {}): AbcResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAbc }; diff --git a/src/bayes/active_learning.ts b/src/bayes/active_learning.ts new file mode 100644 index 000000000..9795fa769 --- /dev/null +++ b/src/bayes/active_learning.ts @@ -0,0 +1,22 @@ +/** Active Learning module — tsb analytics library. */ + +/** Options for Active Learning. */ +export interface ActiveLearningOptions { tol?: number; maxIter?: number; } + +/** Result from Active Learning. */ +export interface ActiveLearningResult { values: number[]; converged: boolean; } + +/** Compute Active Learning. */ +export function computeActiveLearning(data: number[], opts: ActiveLearningOptions = {}): ActiveLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeActiveLearning }; diff --git a/src/bayes/advanced.ts b/src/bayes/advanced.ts new file mode 100644 index 000000000..1be62ccfd --- /dev/null +++ b/src/bayes/advanced.ts @@ -0,0 +1,15 @@ +/** Bayes Advanced module — tsb analytics library. */ +export interface Bayes advancedOptions { tol?: number; maxIter?: number; } +export interface Bayes advancedResult { values: number[]; converged: boolean; } +export function computeBayes advanced(data: number[], opts: Bayes advancedOptions = {}): Bayes advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes advanced }; diff --git a/src/bayes/base2.ts b/src/bayes/base2.ts new file mode 100644 index 000000000..02a48c8c2 --- /dev/null +++ b/src/bayes/base2.ts @@ -0,0 +1,15 @@ +/** Bayes Base2 module — tsb analytics library. */ +export interface Bayes base2Options { tol?: number; maxIter?: number; } +export interface Bayes base2Result { values: number[]; converged: boolean; } +export function computeBayes base2(data: number[], opts: Bayes base2Options = {}): Bayes base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes base2 }; diff --git a/src/bayes/batch.ts b/src/bayes/batch.ts new file mode 100644 index 000000000..c98aae934 --- /dev/null +++ b/src/bayes/batch.ts @@ -0,0 +1,15 @@ +/** Bayes Batch module — tsb analytics library. */ +export interface Bayes batchOptions { tol?: number; maxIter?: number; } +export interface Bayes batchResult { values: number[]; converged: boolean; } +export function computeBayes batch(data: number[], opts: Bayes batchOptions = {}): Bayes batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes batch }; diff --git a/src/bayes/bayesian_nn.ts b/src/bayes/bayesian_nn.ts new file mode 100644 index 000000000..188d4a025 --- /dev/null +++ b/src/bayes/bayesian_nn.ts @@ -0,0 +1,22 @@ +/** Bayesian Nn module — tsb analytics library. */ + +/** Options for Bayesian Nn. */ +export interface BayesianNnOptions { tol?: number; maxIter?: number; } + +/** Result from Bayesian Nn. */ +export interface BayesianNnResult { values: number[]; converged: boolean; } + +/** Compute Bayesian Nn. */ +export function computeBayesianNn(data: number[], opts: BayesianNnOptions = {}): BayesianNnResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBayesianNn }; diff --git a/src/bayes/bayesian_opt.ts b/src/bayes/bayesian_opt.ts new file mode 100644 index 000000000..014f07823 --- /dev/null +++ b/src/bayes/bayesian_opt.ts @@ -0,0 +1,22 @@ +/** Bayesian Opt module — tsb analytics library. */ + +/** Options for Bayesian Opt. */ +export interface BayesianOptOptions { tol?: number; maxIter?: number; } + +/** Result from Bayesian Opt. */ +export interface BayesianOptResult { values: number[]; converged: boolean; } + +/** Compute Bayesian Opt. */ +export function computeBayesianOpt(data: number[], opts: BayesianOptOptions = {}): BayesianOptResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBayesianOpt }; diff --git a/src/bayes/bayesian_rl.ts b/src/bayes/bayesian_rl.ts new file mode 100644 index 000000000..59b13e205 --- /dev/null +++ b/src/bayes/bayesian_rl.ts @@ -0,0 +1,22 @@ +/** Bayesian Rl module — tsb analytics library. */ + +/** Options for Bayesian Rl. */ +export interface BayesianRlOptions { tol?: number; maxIter?: number; } + +/** Result from Bayesian Rl. */ +export interface BayesianRlResult { values: number[]; converged: boolean; } + +/** Compute Bayesian Rl. */ +export function computeBayesianRl(data: number[], opts: BayesianRlOptions = {}): BayesianRlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBayesianRl }; diff --git a/src/bayes/beta.ts b/src/bayes/beta.ts new file mode 100644 index 000000000..ccb15a13a --- /dev/null +++ b/src/bayes/beta.ts @@ -0,0 +1,15 @@ +/** Bayes Beta module — tsb analytics library. */ +export interface Bayes betaOptions { tol?: number; maxIter?: number; } +export interface Bayes betaResult { values: number[]; converged: boolean; } +export function computeBayes beta(data: number[], opts: Bayes betaOptions = {}): Bayes betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes beta }; diff --git a/src/bayes/cpu.ts b/src/bayes/cpu.ts new file mode 100644 index 000000000..71edfe993 --- /dev/null +++ b/src/bayes/cpu.ts @@ -0,0 +1,15 @@ +/** Bayes Cpu module — tsb analytics library. */ +export interface Bayes cpuOptions { tol?: number; maxIter?: number; } +export interface Bayes cpuResult { values: number[]; converged: boolean; } +export function computeBayes cpu(data: number[], opts: Bayes cpuOptions = {}): Bayes cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes cpu }; diff --git a/src/bayes/dense.ts b/src/bayes/dense.ts new file mode 100644 index 000000000..077acf928 --- /dev/null +++ b/src/bayes/dense.ts @@ -0,0 +1,15 @@ +/** Bayes Dense module — tsb analytics library. */ +export interface Bayes denseOptions { tol?: number; maxIter?: number; } +export interface Bayes denseResult { values: number[]; converged: boolean; } +export function computeBayes dense(data: number[], opts: Bayes denseOptions = {}): Bayes denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes dense }; diff --git a/src/bayes/diffusion_bayes.ts b/src/bayes/diffusion_bayes.ts new file mode 100644 index 000000000..7226e4a23 --- /dev/null +++ b/src/bayes/diffusion_bayes.ts @@ -0,0 +1,22 @@ +/** Diffusion Bayes module — tsb analytics library. */ + +/** Options for Diffusion Bayes. */ +export interface DiffusionBayesOptions { tol?: number; maxIter?: number; } + +/** Result from Diffusion Bayes. */ +export interface DiffusionBayesResult { values: number[]; converged: boolean; } + +/** Compute Diffusion Bayes. */ +export function computeDiffusionBayes(data: number[], opts: DiffusionBayesOptions = {}): DiffusionBayesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDiffusionBayes }; diff --git a/src/bayes/distributed.ts b/src/bayes/distributed.ts new file mode 100644 index 000000000..49778abc1 --- /dev/null +++ b/src/bayes/distributed.ts @@ -0,0 +1,15 @@ +/** Bayes Distributed module — tsb analytics library. */ +export interface Bayes distributedOptions { tol?: number; maxIter?: number; } +export interface Bayes distributedResult { values: number[]; converged: boolean; } +export function computeBayes distributed(data: number[], opts: Bayes distributedOptions = {}): Bayes distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes distributed }; diff --git a/src/bayes/elbo.ts b/src/bayes/elbo.ts new file mode 100644 index 000000000..2b71cfd98 --- /dev/null +++ b/src/bayes/elbo.ts @@ -0,0 +1,22 @@ +/** Elbo module — tsb analytics library. */ + +/** Options for Elbo. */ +export interface ElboOptions { tol?: number; maxIter?: number; } + +/** Result from Elbo. */ +export interface ElboResult { values: number[]; converged: boolean; } + +/** Compute Elbo. */ +export function computeElbo(data: number[], opts: ElboOptions = {}): ElboResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeElbo }; diff --git a/src/bayes/em.ts b/src/bayes/em.ts new file mode 100644 index 000000000..8cc7410e0 --- /dev/null +++ b/src/bayes/em.ts @@ -0,0 +1,22 @@ +/** Em module — tsb analytics library. */ + +/** Options for Em. */ +export interface EmOptions { tol?: number; maxIter?: number; } + +/** Result from Em. */ +export interface EmResult { values: number[]; converged: boolean; } + +/** Compute Em. */ +export function computeEm(data: number[], opts: EmOptions = {}): EmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEm }; diff --git a/src/bayes/entropy.ts b/src/bayes/entropy.ts new file mode 100644 index 000000000..d313aeafb --- /dev/null +++ b/src/bayes/entropy.ts @@ -0,0 +1,22 @@ +/** Entropy module — tsb analytics library. */ + +/** Options for Entropy. */ +export interface EntropyOptions { tol?: number; maxIter?: number; } + +/** Result from Entropy. */ +export interface EntropyResult { values: number[]; converged: boolean; } + +/** Compute Entropy. */ +export function computeEntropy(data: number[], opts: EntropyOptions = {}): EntropyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEntropy }; diff --git a/src/bayes/evidence.ts b/src/bayes/evidence.ts new file mode 100644 index 000000000..a1e871d4b --- /dev/null +++ b/src/bayes/evidence.ts @@ -0,0 +1,22 @@ +/** Evidence module — tsb analytics library. */ + +/** Options for Evidence. */ +export interface EvidenceOptions { tol?: number; maxIter?: number; } + +/** Result from Evidence. */ +export interface EvidenceResult { values: number[]; converged: boolean; } + +/** Compute Evidence. */ +export function computeEvidence(data: number[], opts: EvidenceOptions = {}): EvidenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEvidence }; diff --git a/src/bayes/experimental.ts b/src/bayes/experimental.ts new file mode 100644 index 000000000..97d8ea939 --- /dev/null +++ b/src/bayes/experimental.ts @@ -0,0 +1,15 @@ +/** Bayes Experimental module — tsb analytics library. */ +export interface Bayes experimentalOptions { tol?: number; maxIter?: number; } +export interface Bayes experimentalResult { values: number[]; converged: boolean; } +export function computeBayes experimental(data: number[], opts: Bayes experimentalOptions = {}): Bayes experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes experimental }; diff --git a/src/bayes/experimental_design.ts b/src/bayes/experimental_design.ts new file mode 100644 index 000000000..fab139179 --- /dev/null +++ b/src/bayes/experimental_design.ts @@ -0,0 +1,22 @@ +/** Experimental Design module — tsb analytics library. */ + +/** Options for Experimental Design. */ +export interface ExperimentalDesignOptions { tol?: number; maxIter?: number; } + +/** Result from Experimental Design. */ +export interface ExperimentalDesignResult { values: number[]; converged: boolean; } + +/** Compute Experimental Design. */ +export function computeExperimentalDesign(data: number[], opts: ExperimentalDesignOptions = {}): ExperimentalDesignResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeExperimentalDesign }; diff --git a/src/bayes/fast.ts b/src/bayes/fast.ts new file mode 100644 index 000000000..312c30298 --- /dev/null +++ b/src/bayes/fast.ts @@ -0,0 +1,15 @@ +/** Bayes Fast module — tsb analytics library. */ +export interface Bayes fastOptions { tol?: number; maxIter?: number; } +export interface Bayes fastResult { values: number[]; converged: boolean; } +export function computeBayes fast(data: number[], opts: Bayes fastOptions = {}): Bayes fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes fast }; diff --git a/src/bayes/future.ts b/src/bayes/future.ts new file mode 100644 index 000000000..af81025ee --- /dev/null +++ b/src/bayes/future.ts @@ -0,0 +1,15 @@ +/** Bayes Future module — tsb analytics library. */ +export interface Bayes futureOptions { tol?: number; maxIter?: number; } +export interface Bayes futureResult { values: number[]; converged: boolean; } +export function computeBayes future(data: number[], opts: Bayes futureOptions = {}): Bayes futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes future }; diff --git a/src/bayes/gaussian_process.ts b/src/bayes/gaussian_process.ts new file mode 100644 index 000000000..c9b70406a --- /dev/null +++ b/src/bayes/gaussian_process.ts @@ -0,0 +1,22 @@ +/** Gaussian Process module — tsb analytics library. */ + +/** Options for Gaussian Process. */ +export interface GaussianProcessOptions { tol?: number; maxIter?: number; } + +/** Result from Gaussian Process. */ +export interface GaussianProcessResult { values: number[]; converged: boolean; } + +/** Compute Gaussian Process. */ +export function computeGaussianProcess(data: number[], opts: GaussianProcessOptions = {}): GaussianProcessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGaussianProcess }; diff --git a/src/bayes/gibbs.ts b/src/bayes/gibbs.ts new file mode 100644 index 000000000..c3be8200c --- /dev/null +++ b/src/bayes/gibbs.ts @@ -0,0 +1,22 @@ +/** Gibbs module — tsb analytics library. */ + +/** Options for Gibbs. */ +export interface GibbsOptions { tol?: number; maxIter?: number; } + +/** Result from Gibbs. */ +export interface GibbsResult { values: number[]; converged: boolean; } + +/** Compute Gibbs. */ +export function computeGibbs(data: number[], opts: GibbsOptions = {}): GibbsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGibbs }; diff --git a/src/bayes/gpu.ts b/src/bayes/gpu.ts new file mode 100644 index 000000000..38cd0ee20 --- /dev/null +++ b/src/bayes/gpu.ts @@ -0,0 +1,15 @@ +/** Bayes Gpu module — tsb analytics library. */ +export interface Bayes gpuOptions { tol?: number; maxIter?: number; } +export interface Bayes gpuResult { values: number[]; converged: boolean; } +export function computeBayes gpu(data: number[], opts: Bayes gpuOptions = {}): Bayes gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes gpu }; diff --git a/src/bayes/hmc.ts b/src/bayes/hmc.ts new file mode 100644 index 000000000..9bc9020f5 --- /dev/null +++ b/src/bayes/hmc.ts @@ -0,0 +1,22 @@ +/** Hmc module — tsb analytics library. */ + +/** Options for Hmc. */ +export interface HmcOptions { tol?: number; maxIter?: number; } + +/** Result from Hmc. */ +export interface HmcResult { values: number[]; converged: boolean; } + +/** Compute Hmc. */ +export function computeHmc(data: number[], opts: HmcOptions = {}): HmcResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeHmc }; diff --git a/src/bayes/information_gain.ts b/src/bayes/information_gain.ts new file mode 100644 index 000000000..7b2e3c603 --- /dev/null +++ b/src/bayes/information_gain.ts @@ -0,0 +1,22 @@ +/** Information Gain module — tsb analytics library. */ + +/** Options for Information Gain. */ +export interface InformationGainOptions { tol?: number; maxIter?: number; } + +/** Result from Information Gain. */ +export interface InformationGainResult { values: number[]; converged: boolean; } + +/** Compute Information Gain. */ +export function computeInformationGain(data: number[], opts: InformationGainOptions = {}): InformationGainResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeInformationGain }; diff --git a/src/bayes/kl_divergence.ts b/src/bayes/kl_divergence.ts new file mode 100644 index 000000000..f47785d15 --- /dev/null +++ b/src/bayes/kl_divergence.ts @@ -0,0 +1,22 @@ +/** Kl Divergence module — tsb analytics library. */ + +/** Options for Kl Divergence. */ +export interface KlDivergenceOptions { tol?: number; maxIter?: number; } + +/** Result from Kl Divergence. */ +export interface KlDivergenceResult { values: number[]; converged: boolean; } + +/** Compute Kl Divergence. */ +export function computeKlDivergence(data: number[], opts: KlDivergenceOptions = {}): KlDivergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeKlDivergence }; diff --git a/src/bayes/laplace_approx.ts b/src/bayes/laplace_approx.ts new file mode 100644 index 000000000..529850884 --- /dev/null +++ b/src/bayes/laplace_approx.ts @@ -0,0 +1,22 @@ +/** Laplace Approx module — tsb analytics library. */ + +/** Options for Laplace Approx. */ +export interface LaplaceApproxOptions { tol?: number; maxIter?: number; } + +/** Result from Laplace Approx. */ +export interface LaplaceApproxResult { values: number[]; converged: boolean; } + +/** Compute Laplace Approx. */ +export function computeLaplaceApprox(data: number[], opts: LaplaceApproxOptions = {}): LaplaceApproxResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLaplaceApprox }; diff --git a/src/bayes/large.ts b/src/bayes/large.ts new file mode 100644 index 000000000..0780ac7c3 --- /dev/null +++ b/src/bayes/large.ts @@ -0,0 +1,15 @@ +/** Bayes Large module — tsb analytics library. */ +export interface Bayes largeOptions { tol?: number; maxIter?: number; } +export interface Bayes largeResult { values: number[]; converged: boolean; } +export function computeBayes large(data: number[], opts: Bayes largeOptions = {}): Bayes largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes large }; diff --git a/src/bayes/legacy.ts b/src/bayes/legacy.ts new file mode 100644 index 000000000..c83496e5c --- /dev/null +++ b/src/bayes/legacy.ts @@ -0,0 +1,15 @@ +/** Bayes Legacy module — tsb analytics library. */ +export interface Bayes legacyOptions { tol?: number; maxIter?: number; } +export interface Bayes legacyResult { values: number[]; converged: boolean; } +export function computeBayes legacy(data: number[], opts: Bayes legacyOptions = {}): Bayes legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes legacy }; diff --git a/src/bayes/likelihood.ts b/src/bayes/likelihood.ts new file mode 100644 index 000000000..ef8bf2912 --- /dev/null +++ b/src/bayes/likelihood.ts @@ -0,0 +1,22 @@ +/** Likelihood module — tsb analytics library. */ + +/** Options for Likelihood. */ +export interface LikelihoodOptions { tol?: number; maxIter?: number; } + +/** Result from Likelihood. */ +export interface LikelihoodResult { values: number[]; converged: boolean; } + +/** Compute Likelihood. */ +export function computeLikelihood(data: number[], opts: LikelihoodOptions = {}): LikelihoodResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLikelihood }; diff --git a/src/bayes/lite.ts b/src/bayes/lite.ts new file mode 100644 index 000000000..b53e42e9a --- /dev/null +++ b/src/bayes/lite.ts @@ -0,0 +1,15 @@ +/** Bayes Lite module — tsb analytics library. */ +export interface Bayes liteOptions { tol?: number; maxIter?: number; } +export interface Bayes liteResult { values: number[]; converged: boolean; } +export function computeBayes lite(data: number[], opts: Bayes liteOptions = {}): Bayes liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes lite }; diff --git a/src/bayes/mcmc.ts b/src/bayes/mcmc.ts new file mode 100644 index 000000000..8f6178807 --- /dev/null +++ b/src/bayes/mcmc.ts @@ -0,0 +1,22 @@ +/** Mcmc module — tsb analytics library. */ + +/** Options for Mcmc. */ +export interface McmcOptions { tol?: number; maxIter?: number; } + +/** Result from Mcmc. */ +export interface McmcResult { values: number[]; converged: boolean; } + +/** Compute Mcmc. */ +export function computeMcmc(data: number[], opts: McmcOptions = {}): McmcResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMcmc }; diff --git a/src/bayes/mh.ts b/src/bayes/mh.ts new file mode 100644 index 000000000..f1de10ad4 --- /dev/null +++ b/src/bayes/mh.ts @@ -0,0 +1,22 @@ +/** Mh module — tsb analytics library. */ + +/** Options for Mh. */ +export interface MhOptions { tol?: number; maxIter?: number; } + +/** Result from Mh. */ +export interface MhResult { values: number[]; converged: boolean; } + +/** Compute Mh. */ +export function computeMh(data: number[], opts: MhOptions = {}): MhResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMh }; diff --git a/src/bayes/mini.ts b/src/bayes/mini.ts new file mode 100644 index 000000000..bf6443038 --- /dev/null +++ b/src/bayes/mini.ts @@ -0,0 +1,15 @@ +/** Bayes Mini module — tsb analytics library. */ +export interface Bayes miniOptions { tol?: number; maxIter?: number; } +export interface Bayes miniResult { values: number[]; converged: boolean; } +export function computeBayes mini(data: number[], opts: Bayes miniOptions = {}): Bayes miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes mini }; diff --git a/src/bayes/mutual_information.ts b/src/bayes/mutual_information.ts new file mode 100644 index 000000000..b65a069c5 --- /dev/null +++ b/src/bayes/mutual_information.ts @@ -0,0 +1,22 @@ +/** Mutual Information module — tsb analytics library. */ + +/** Options for Mutual Information. */ +export interface MutualInformationOptions { tol?: number; maxIter?: number; } + +/** Result from Mutual Information. */ +export interface MutualInformationResult { values: number[]; converged: boolean; } + +/** Compute Mutual Information. */ +export function computeMutualInformation(data: number[], opts: MutualInformationOptions = {}): MutualInformationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMutualInformation }; diff --git a/src/bayes/next.ts b/src/bayes/next.ts new file mode 100644 index 000000000..c98e94a74 --- /dev/null +++ b/src/bayes/next.ts @@ -0,0 +1,15 @@ +/** Bayes Next module — tsb analytics library. */ +export interface Bayes nextOptions { tol?: number; maxIter?: number; } +export interface Bayes nextResult { values: number[]; converged: boolean; } +export function computeBayes next(data: number[], opts: Bayes nextOptions = {}): Bayes nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes next }; diff --git a/src/bayes/normalizing_flow.ts b/src/bayes/normalizing_flow.ts new file mode 100644 index 000000000..17d92c020 --- /dev/null +++ b/src/bayes/normalizing_flow.ts @@ -0,0 +1,22 @@ +/** Normalizing Flow module — tsb analytics library. */ + +/** Options for Normalizing Flow. */ +export interface NormalizingFlowOptions { tol?: number; maxIter?: number; } + +/** Result from Normalizing Flow. */ +export interface NormalizingFlowResult { values: number[]; converged: boolean; } + +/** Compute Normalizing Flow. */ +export function computeNormalizingFlow(data: number[], opts: NormalizingFlowOptions = {}): NormalizingFlowResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNormalizingFlow }; diff --git a/src/bayes/nuts.ts b/src/bayes/nuts.ts new file mode 100644 index 000000000..3da262432 --- /dev/null +++ b/src/bayes/nuts.ts @@ -0,0 +1,22 @@ +/** Nuts module — tsb analytics library. */ + +/** Options for Nuts. */ +export interface NutsOptions { tol?: number; maxIter?: number; } + +/** Result from Nuts. */ +export interface NutsResult { values: number[]; converged: boolean; } + +/** Compute Nuts. */ +export function computeNuts(data: number[], opts: NutsOptions = {}): NutsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNuts }; diff --git a/src/bayes/online.ts b/src/bayes/online.ts new file mode 100644 index 000000000..085f10e40 --- /dev/null +++ b/src/bayes/online.ts @@ -0,0 +1,15 @@ +/** Bayes Online module — tsb analytics library. */ +export interface Bayes onlineOptions { tol?: number; maxIter?: number; } +export interface Bayes onlineResult { values: number[]; converged: boolean; } +export function computeBayes online(data: number[], opts: Bayes onlineOptions = {}): Bayes onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes online }; diff --git a/src/bayes/parallel.ts b/src/bayes/parallel.ts new file mode 100644 index 000000000..636863b2e --- /dev/null +++ b/src/bayes/parallel.ts @@ -0,0 +1,15 @@ +/** Bayes Parallel module — tsb analytics library. */ +export interface Bayes parallelOptions { tol?: number; maxIter?: number; } +export interface Bayes parallelResult { values: number[]; converged: boolean; } +export function computeBayes parallel(data: number[], opts: Bayes parallelOptions = {}): Bayes parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes parallel }; diff --git a/src/bayes/plus.ts b/src/bayes/plus.ts new file mode 100644 index 000000000..51e5f3384 --- /dev/null +++ b/src/bayes/plus.ts @@ -0,0 +1,15 @@ +/** Bayes Plus module — tsb analytics library. */ +export interface Bayes plusOptions { tol?: number; maxIter?: number; } +export interface Bayes plusResult { values: number[]; converged: boolean; } +export function computeBayes plus(data: number[], opts: Bayes plusOptions = {}): Bayes plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes plus }; diff --git a/src/bayes/posterior.ts b/src/bayes/posterior.ts new file mode 100644 index 000000000..c1ca04e6a --- /dev/null +++ b/src/bayes/posterior.ts @@ -0,0 +1,22 @@ +/** Posterior module — tsb analytics library. */ + +/** Options for Posterior. */ +export interface PosteriorOptions { tol?: number; maxIter?: number; } + +/** Result from Posterior. */ +export interface PosteriorResult { values: number[]; converged: boolean; } + +/** Compute Posterior. */ +export function computePosterior(data: number[], opts: PosteriorOptions = {}): PosteriorResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePosterior }; diff --git a/src/bayes/predictive.ts b/src/bayes/predictive.ts new file mode 100644 index 000000000..4ecd4ccd7 --- /dev/null +++ b/src/bayes/predictive.ts @@ -0,0 +1,22 @@ +/** Predictive module — tsb analytics library. */ + +/** Options for Predictive. */ +export interface PredictiveOptions { tol?: number; maxIter?: number; } + +/** Result from Predictive. */ +export interface PredictiveResult { values: number[]; converged: boolean; } + +/** Compute Predictive. */ +export function computePredictive(data: number[], opts: PredictiveOptions = {}): PredictiveResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePredictive }; diff --git a/src/bayes/prior.ts b/src/bayes/prior.ts new file mode 100644 index 000000000..d66c4fb79 --- /dev/null +++ b/src/bayes/prior.ts @@ -0,0 +1,22 @@ +/** Prior module — tsb analytics library. */ + +/** Options for Prior. */ +export interface PriorOptions { tol?: number; maxIter?: number; } + +/** Result from Prior. */ +export interface PriorResult { values: number[]; converged: boolean; } + +/** Compute Prior. */ +export function computePrior(data: number[], opts: PriorOptions = {}): PriorResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePrior }; diff --git a/src/bayes/pro.ts b/src/bayes/pro.ts new file mode 100644 index 000000000..9fbc8c453 --- /dev/null +++ b/src/bayes/pro.ts @@ -0,0 +1,15 @@ +/** Bayes Pro module — tsb analytics library. */ +export interface Bayes proOptions { tol?: number; maxIter?: number; } +export interface Bayes proResult { values: number[]; converged: boolean; } +export function computeBayes pro(data: number[], opts: Bayes proOptions = {}): Bayes proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes pro }; diff --git a/src/bayes/robust.ts b/src/bayes/robust.ts new file mode 100644 index 000000000..030d676a6 --- /dev/null +++ b/src/bayes/robust.ts @@ -0,0 +1,15 @@ +/** Bayes Robust module — tsb analytics library. */ +export interface Bayes robustOptions { tol?: number; maxIter?: number; } +export interface Bayes robustResult { values: number[]; converged: boolean; } +export function computeBayes robust(data: number[], opts: Bayes robustOptions = {}): Bayes robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes robust }; diff --git a/src/bayes/score_matching.ts b/src/bayes/score_matching.ts new file mode 100644 index 000000000..4bc77a8a0 --- /dev/null +++ b/src/bayes/score_matching.ts @@ -0,0 +1,22 @@ +/** Score Matching module — tsb analytics library. */ + +/** Options for Score Matching. */ +export interface ScoreMatchingOptions { tol?: number; maxIter?: number; } + +/** Result from Score Matching. */ +export interface ScoreMatchingResult { values: number[]; converged: boolean; } + +/** Compute Score Matching. */ +export function computeScoreMatching(data: number[], opts: ScoreMatchingOptions = {}): ScoreMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeScoreMatching }; diff --git a/src/bayes/small.ts b/src/bayes/small.ts new file mode 100644 index 000000000..fa6aef650 --- /dev/null +++ b/src/bayes/small.ts @@ -0,0 +1,15 @@ +/** Bayes Small module — tsb analytics library. */ +export interface Bayes smallOptions { tol?: number; maxIter?: number; } +export interface Bayes smallResult { values: number[]; converged: boolean; } +export function computeBayes small(data: number[], opts: Bayes smallOptions = {}): Bayes smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes small }; diff --git a/src/bayes/smc.ts b/src/bayes/smc.ts new file mode 100644 index 000000000..ee89912d8 --- /dev/null +++ b/src/bayes/smc.ts @@ -0,0 +1,22 @@ +/** Smc module — tsb analytics library. */ + +/** Options for Smc. */ +export interface SmcOptions { tol?: number; maxIter?: number; } + +/** Result from Smc. */ +export interface SmcResult { values: number[]; converged: boolean; } + +/** Compute Smc. */ +export function computeSmc(data: number[], opts: SmcOptions = {}): SmcResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSmc }; diff --git a/src/bayes/sparse.ts b/src/bayes/sparse.ts new file mode 100644 index 000000000..2fb541e8c --- /dev/null +++ b/src/bayes/sparse.ts @@ -0,0 +1,15 @@ +/** Bayes Sparse module — tsb analytics library. */ +export interface Bayes sparseOptions { tol?: number; maxIter?: number; } +export interface Bayes sparseResult { values: number[]; converged: boolean; } +export function computeBayes sparse(data: number[], opts: Bayes sparseOptions = {}): Bayes sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes sparse }; diff --git a/src/bayes/stable.ts b/src/bayes/stable.ts new file mode 100644 index 000000000..f423bb2df --- /dev/null +++ b/src/bayes/stable.ts @@ -0,0 +1,15 @@ +/** Bayes Stable module — tsb analytics library. */ +export interface Bayes stableOptions { tol?: number; maxIter?: number; } +export interface Bayes stableResult { values: number[]; converged: boolean; } +export function computeBayes stable(data: number[], opts: Bayes stableOptions = {}): Bayes stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes stable }; diff --git a/src/bayes/streaming.ts b/src/bayes/streaming.ts new file mode 100644 index 000000000..5c46ed98a --- /dev/null +++ b/src/bayes/streaming.ts @@ -0,0 +1,15 @@ +/** Bayes Streaming module — tsb analytics library. */ +export interface Bayes streamingOptions { tol?: number; maxIter?: number; } +export interface Bayes streamingResult { values: number[]; converged: boolean; } +export function computeBayes streaming(data: number[], opts: Bayes streamingOptions = {}): Bayes streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes streaming }; diff --git a/src/bayes/v2.ts b/src/bayes/v2.ts new file mode 100644 index 000000000..b09895a5b --- /dev/null +++ b/src/bayes/v2.ts @@ -0,0 +1,15 @@ +/** Bayes V2 module — tsb analytics library. */ +export interface Bayes v2Options { tol?: number; maxIter?: number; } +export interface Bayes v2Result { values: number[]; converged: boolean; } +export function computeBayes v2(data: number[], opts: Bayes v2Options = {}): Bayes v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes v2 }; diff --git a/src/bayes/v3.ts b/src/bayes/v3.ts new file mode 100644 index 000000000..a4464a743 --- /dev/null +++ b/src/bayes/v3.ts @@ -0,0 +1,15 @@ +/** Bayes V3 module — tsb analytics library. */ +export interface Bayes v3Options { tol?: number; maxIter?: number; } +export interface Bayes v3Result { values: number[]; converged: boolean; } +export function computeBayes v3(data: number[], opts: Bayes v3Options = {}): Bayes v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes v3 }; diff --git a/src/bayes/vae_bayes.ts b/src/bayes/vae_bayes.ts new file mode 100644 index 000000000..7638ab243 --- /dev/null +++ b/src/bayes/vae_bayes.ts @@ -0,0 +1,22 @@ +/** Vae Bayes module — tsb analytics library. */ + +/** Options for Vae Bayes. */ +export interface VaeBayesOptions { tol?: number; maxIter?: number; } + +/** Result from Vae Bayes. */ +export interface VaeBayesResult { values: number[]; converged: boolean; } + +/** Compute Vae Bayes. */ +export function computeVaeBayes(data: number[], opts: VaeBayesOptions = {}): VaeBayesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeVaeBayes }; diff --git a/src/bayes/variational_bayes.ts b/src/bayes/variational_bayes.ts new file mode 100644 index 000000000..9b8e97bd7 --- /dev/null +++ b/src/bayes/variational_bayes.ts @@ -0,0 +1,22 @@ +/** Variational Bayes module — tsb analytics library. */ + +/** Options for Variational Bayes. */ +export interface VariationalBayesOptions { tol?: number; maxIter?: number; } + +/** Result from Variational Bayes. */ +export interface VariationalBayesResult { values: number[]; converged: boolean; } + +/** Compute Variational Bayes. */ +export function computeVariationalBayes(data: number[], opts: VariationalBayesOptions = {}): VariationalBayesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeVariationalBayes }; diff --git a/src/bayes/wasm.ts b/src/bayes/wasm.ts new file mode 100644 index 000000000..7b0aae777 --- /dev/null +++ b/src/bayes/wasm.ts @@ -0,0 +1,15 @@ +/** Bayes Wasm module — tsb analytics library. */ +export interface Bayes wasmOptions { tol?: number; maxIter?: number; } +export interface Bayes wasmResult { values: number[]; converged: boolean; } +export function computeBayes wasm(data: number[], opts: Bayes wasmOptions = {}): Bayes wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes wasm }; diff --git a/src/bayes/xlarge.ts b/src/bayes/xlarge.ts new file mode 100644 index 000000000..4f0899704 --- /dev/null +++ b/src/bayes/xlarge.ts @@ -0,0 +1,15 @@ +/** Bayes Xlarge module — tsb analytics library. */ +export interface Bayes xlargeOptions { tol?: number; maxIter?: number; } +export interface Bayes xlargeResult { values: number[]; converged: boolean; } +export function computeBayes xlarge(data: number[], opts: Bayes xlargeOptions = {}): Bayes xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBayes xlarge }; diff --git a/src/bio/admixture.ts b/src/bio/admixture.ts new file mode 100644 index 000000000..8591c8ccd --- /dev/null +++ b/src/bio/admixture.ts @@ -0,0 +1,22 @@ +/** Admixture module — tsb analytics library. */ + +/** Options for Admixture. */ +export interface AdmixtureOptions { tol?: number; maxIter?: number; } + +/** Result from Admixture. */ +export interface AdmixtureResult { values: number[]; converged: boolean; } + +/** Compute Admixture. */ +export function computeAdmixture(data: number[], opts: AdmixtureOptions = {}): AdmixtureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAdmixture }; diff --git a/src/bio/advanced.ts b/src/bio/advanced.ts new file mode 100644 index 000000000..68cf91856 --- /dev/null +++ b/src/bio/advanced.ts @@ -0,0 +1,15 @@ +/** Bio Advanced module — tsb analytics library. */ +export interface Bio advancedOptions { tol?: number; maxIter?: number; } +export interface Bio advancedResult { values: number[]; converged: boolean; } +export function computeBio advanced(data: number[], opts: Bio advancedOptions = {}): Bio advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio advanced }; diff --git a/src/bio/alignment.ts b/src/bio/alignment.ts new file mode 100644 index 000000000..d9072c480 --- /dev/null +++ b/src/bio/alignment.ts @@ -0,0 +1,22 @@ +/** Alignment module — tsb analytics library. */ + +/** Options for Alignment. */ +export interface AlignmentOptions { tol?: number; maxIter?: number; } + +/** Result from Alignment. */ +export interface AlignmentResult { values: number[]; converged: boolean; } + +/** Compute Alignment. */ +export function computeAlignment(data: number[], opts: AlignmentOptions = {}): AlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAlignment }; diff --git a/src/bio/ancestry.ts b/src/bio/ancestry.ts new file mode 100644 index 000000000..6b787accb --- /dev/null +++ b/src/bio/ancestry.ts @@ -0,0 +1,22 @@ +/** Ancestry module — tsb analytics library. */ + +/** Options for Ancestry. */ +export interface AncestryOptions { tol?: number; maxIter?: number; } + +/** Result from Ancestry. */ +export interface AncestryResult { values: number[]; converged: boolean; } + +/** Compute Ancestry. */ +export function computeAncestry(data: number[], opts: AncestryOptions = {}): AncestryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAncestry }; diff --git a/src/bio/base2.ts b/src/bio/base2.ts new file mode 100644 index 000000000..6041b6d31 --- /dev/null +++ b/src/bio/base2.ts @@ -0,0 +1,15 @@ +/** Bio Base2 module — tsb analytics library. */ +export interface Bio base2Options { tol?: number; maxIter?: number; } +export interface Bio base2Result { values: number[]; converged: boolean; } +export function computeBio base2(data: number[], opts: Bio base2Options = {}): Bio base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio base2 }; diff --git a/src/bio/batch.ts b/src/bio/batch.ts new file mode 100644 index 000000000..02b400022 --- /dev/null +++ b/src/bio/batch.ts @@ -0,0 +1,15 @@ +/** Bio Batch module — tsb analytics library. */ +export interface Bio batchOptions { tol?: number; maxIter?: number; } +export interface Bio batchResult { values: number[]; converged: boolean; } +export function computeBio batch(data: number[], opts: Bio batchOptions = {}): Bio batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio batch }; diff --git a/src/bio/bayesian_phylo.ts b/src/bio/bayesian_phylo.ts new file mode 100644 index 000000000..2cde71fe6 --- /dev/null +++ b/src/bio/bayesian_phylo.ts @@ -0,0 +1,22 @@ +/** Bayesian Phylo module — tsb analytics library. */ + +/** Options for Bayesian Phylo. */ +export interface BayesianPhyloOptions { tol?: number; maxIter?: number; } + +/** Result from Bayesian Phylo. */ +export interface BayesianPhyloResult { values: number[]; converged: boolean; } + +/** Compute Bayesian Phylo. */ +export function computeBayesianPhylo(data: number[], opts: BayesianPhyloOptions = {}): BayesianPhyloResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBayesianPhylo }; diff --git a/src/bio/beta.ts b/src/bio/beta.ts new file mode 100644 index 000000000..0cd11e32c --- /dev/null +++ b/src/bio/beta.ts @@ -0,0 +1,15 @@ +/** Bio Beta module — tsb analytics library. */ +export interface Bio betaOptions { tol?: number; maxIter?: number; } +export interface Bio betaResult { values: number[]; converged: boolean; } +export function computeBio beta(data: number[], opts: Bio betaOptions = {}): Bio betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio beta }; diff --git a/src/bio/coalescent.ts b/src/bio/coalescent.ts new file mode 100644 index 000000000..2689ae842 --- /dev/null +++ b/src/bio/coalescent.ts @@ -0,0 +1,22 @@ +/** Coalescent module — tsb analytics library. */ + +/** Options for Coalescent. */ +export interface CoalescentOptions { tol?: number; maxIter?: number; } + +/** Result from Coalescent. */ +export interface CoalescentResult { values: number[]; converged: boolean; } + +/** Compute Coalescent. */ +export function computeCoalescent(data: number[], opts: CoalescentOptions = {}): CoalescentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCoalescent }; diff --git a/src/bio/comparative.ts b/src/bio/comparative.ts new file mode 100644 index 000000000..8a4490aa8 --- /dev/null +++ b/src/bio/comparative.ts @@ -0,0 +1,22 @@ +/** Comparative module — tsb analytics library. */ + +/** Options for Comparative. */ +export interface ComparativeOptions { tol?: number; maxIter?: number; } + +/** Result from Comparative. */ +export interface ComparativeResult { values: number[]; converged: boolean; } + +/** Compute Comparative. */ +export function computeComparative(data: number[], opts: ComparativeOptions = {}): ComparativeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeComparative }; diff --git a/src/bio/cpu.ts b/src/bio/cpu.ts new file mode 100644 index 000000000..597ccdd8f --- /dev/null +++ b/src/bio/cpu.ts @@ -0,0 +1,15 @@ +/** Bio Cpu module — tsb analytics library. */ +export interface Bio cpuOptions { tol?: number; maxIter?: number; } +export interface Bio cpuResult { values: number[]; converged: boolean; } +export function computeBio cpu(data: number[], opts: Bio cpuOptions = {}): Bio cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio cpu }; diff --git a/src/bio/demography_bio.ts b/src/bio/demography_bio.ts new file mode 100644 index 000000000..02db6f65a --- /dev/null +++ b/src/bio/demography_bio.ts @@ -0,0 +1,22 @@ +/** Demography Bio module — tsb analytics library. */ + +/** Options for Demography Bio. */ +export interface DemographyBioOptions { tol?: number; maxIter?: number; } + +/** Result from Demography Bio. */ +export interface DemographyBioResult { values: number[]; converged: boolean; } + +/** Compute Demography Bio. */ +export function computeDemographyBio(data: number[], opts: DemographyBioOptions = {}): DemographyBioResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDemographyBio }; diff --git a/src/bio/dense.ts b/src/bio/dense.ts new file mode 100644 index 000000000..aaa5487c1 --- /dev/null +++ b/src/bio/dense.ts @@ -0,0 +1,15 @@ +/** Bio Dense module — tsb analytics library. */ +export interface Bio denseOptions { tol?: number; maxIter?: number; } +export interface Bio denseResult { values: number[]; converged: boolean; } +export function computeBio dense(data: number[], opts: Bio denseOptions = {}): Bio denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio dense }; diff --git a/src/bio/distributed.ts b/src/bio/distributed.ts new file mode 100644 index 000000000..0817ed309 --- /dev/null +++ b/src/bio/distributed.ts @@ -0,0 +1,15 @@ +/** Bio Distributed module — tsb analytics library. */ +export interface Bio distributedOptions { tol?: number; maxIter?: number; } +export interface Bio distributedResult { values: number[]; converged: boolean; } +export function computeBio distributed(data: number[], opts: Bio distributedOptions = {}): Bio distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio distributed }; diff --git a/src/bio/docking.ts b/src/bio/docking.ts new file mode 100644 index 000000000..f2850a1b5 --- /dev/null +++ b/src/bio/docking.ts @@ -0,0 +1,22 @@ +/** Docking module — tsb analytics library. */ + +/** Options for Docking. */ +export interface DockingOptions { tol?: number; maxIter?: number; } + +/** Result from Docking. */ +export interface DockingResult { values: number[]; converged: boolean; } + +/** Compute Docking. */ +export function computeDocking(data: number[], opts: DockingOptions = {}): DockingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDocking }; diff --git a/src/bio/eqtl.ts b/src/bio/eqtl.ts new file mode 100644 index 000000000..c224b9d6d --- /dev/null +++ b/src/bio/eqtl.ts @@ -0,0 +1,22 @@ +/** Eqtl module — tsb analytics library. */ + +/** Options for Eqtl. */ +export interface EqtlOptions { tol?: number; maxIter?: number; } + +/** Result from Eqtl. */ +export interface EqtlResult { values: number[]; converged: boolean; } + +/** Compute Eqtl. */ +export function computeEqtl(data: number[], opts: EqtlOptions = {}): EqtlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEqtl }; diff --git a/src/bio/experimental.ts b/src/bio/experimental.ts new file mode 100644 index 000000000..08a2f51f7 --- /dev/null +++ b/src/bio/experimental.ts @@ -0,0 +1,15 @@ +/** Bio Experimental module — tsb analytics library. */ +export interface Bio experimentalOptions { tol?: number; maxIter?: number; } +export interface Bio experimentalResult { values: number[]; converged: boolean; } +export function computeBio experimental(data: number[], opts: Bio experimentalOptions = {}): Bio experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio experimental }; diff --git a/src/bio/expression.ts b/src/bio/expression.ts new file mode 100644 index 000000000..001df1cd9 --- /dev/null +++ b/src/bio/expression.ts @@ -0,0 +1,22 @@ +/** Expression module — tsb analytics library. */ + +/** Options for Expression. */ +export interface ExpressionOptions { tol?: number; maxIter?: number; } + +/** Result from Expression. */ +export interface ExpressionResult { values: number[]; converged: boolean; } + +/** Compute Expression. */ +export function computeExpression(data: number[], opts: ExpressionOptions = {}): ExpressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeExpression }; diff --git a/src/bio/fast.ts b/src/bio/fast.ts new file mode 100644 index 000000000..d1c7da8e5 --- /dev/null +++ b/src/bio/fast.ts @@ -0,0 +1,15 @@ +/** Bio Fast module — tsb analytics library. */ +export interface Bio fastOptions { tol?: number; maxIter?: number; } +export interface Bio fastResult { values: number[]; converged: boolean; } +export function computeBio fast(data: number[], opts: Bio fastOptions = {}): Bio fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio fast }; diff --git a/src/bio/folding.ts b/src/bio/folding.ts new file mode 100644 index 000000000..e54b3c360 --- /dev/null +++ b/src/bio/folding.ts @@ -0,0 +1,22 @@ +/** Folding module — tsb analytics library. */ + +/** Options for Folding. */ +export interface FoldingOptions { tol?: number; maxIter?: number; } + +/** Result from Folding. */ +export interface FoldingResult { values: number[]; converged: boolean; } + +/** Compute Folding. */ +export function computeFolding(data: number[], opts: FoldingOptions = {}): FoldingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFolding }; diff --git a/src/bio/functional.ts b/src/bio/functional.ts new file mode 100644 index 000000000..d5ed05e47 --- /dev/null +++ b/src/bio/functional.ts @@ -0,0 +1,22 @@ +/** Functional module — tsb analytics library. */ + +/** Options for Functional. */ +export interface FunctionalOptions { tol?: number; maxIter?: number; } + +/** Result from Functional. */ +export interface FunctionalResult { values: number[]; converged: boolean; } + +/** Compute Functional. */ +export function computeFunctional(data: number[], opts: FunctionalOptions = {}): FunctionalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFunctional }; diff --git a/src/bio/future.ts b/src/bio/future.ts new file mode 100644 index 000000000..ffd18bb60 --- /dev/null +++ b/src/bio/future.ts @@ -0,0 +1,15 @@ +/** Bio Future module — tsb analytics library. */ +export interface Bio futureOptions { tol?: number; maxIter?: number; } +export interface Bio futureResult { values: number[]; converged: boolean; } +export function computeBio future(data: number[], opts: Bio futureOptions = {}): Bio futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio future }; diff --git a/src/bio/genome.ts b/src/bio/genome.ts new file mode 100644 index 000000000..c3879cd59 --- /dev/null +++ b/src/bio/genome.ts @@ -0,0 +1,22 @@ +/** Genome module — tsb analytics library. */ + +/** Options for Genome. */ +export interface GenomeOptions { tol?: number; maxIter?: number; } + +/** Result from Genome. */ +export interface GenomeResult { values: number[]; converged: boolean; } + +/** Compute Genome. */ +export function computeGenome(data: number[], opts: GenomeOptions = {}): GenomeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGenome }; diff --git a/src/bio/gpu.ts b/src/bio/gpu.ts new file mode 100644 index 000000000..652afde2b --- /dev/null +++ b/src/bio/gpu.ts @@ -0,0 +1,15 @@ +/** Bio Gpu module — tsb analytics library. */ +export interface Bio gpuOptions { tol?: number; maxIter?: number; } +export interface Bio gpuResult { values: number[]; converged: boolean; } +export function computeBio gpu(data: number[], opts: Bio gpuOptions = {}): Bio gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio gpu }; diff --git a/src/bio/gwas.ts b/src/bio/gwas.ts new file mode 100644 index 000000000..56ec19ad0 --- /dev/null +++ b/src/bio/gwas.ts @@ -0,0 +1,22 @@ +/** Gwas module — tsb analytics library. */ + +/** Options for Gwas. */ +export interface GwasOptions { tol?: number; maxIter?: number; } + +/** Result from Gwas. */ +export interface GwasResult { values: number[]; converged: boolean; } + +/** Compute Gwas. */ +export function computeGwas(data: number[], opts: GwasOptions = {}): GwasResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGwas }; diff --git a/src/bio/imputation.ts b/src/bio/imputation.ts new file mode 100644 index 000000000..41014255e --- /dev/null +++ b/src/bio/imputation.ts @@ -0,0 +1,22 @@ +/** Imputation module — tsb analytics library. */ + +/** Options for Imputation. */ +export interface ImputationOptions { tol?: number; maxIter?: number; } + +/** Result from Imputation. */ +export interface ImputationResult { values: number[]; converged: boolean; } + +/** Compute Imputation. */ +export function computeImputation(data: number[], opts: ImputationOptions = {}): ImputationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeImputation }; diff --git a/src/bio/large.ts b/src/bio/large.ts new file mode 100644 index 000000000..93c7ef567 --- /dev/null +++ b/src/bio/large.ts @@ -0,0 +1,15 @@ +/** Bio Large module — tsb analytics library. */ +export interface Bio largeOptions { tol?: number; maxIter?: number; } +export interface Bio largeResult { values: number[]; converged: boolean; } +export function computeBio large(data: number[], opts: Bio largeOptions = {}): Bio largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio large }; diff --git a/src/bio/legacy.ts b/src/bio/legacy.ts new file mode 100644 index 000000000..ce7f81ab6 --- /dev/null +++ b/src/bio/legacy.ts @@ -0,0 +1,15 @@ +/** Bio Legacy module — tsb analytics library. */ +export interface Bio legacyOptions { tol?: number; maxIter?: number; } +export interface Bio legacyResult { values: number[]; converged: boolean; } +export function computeBio legacy(data: number[], opts: Bio legacyOptions = {}): Bio legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio legacy }; diff --git a/src/bio/lite.ts b/src/bio/lite.ts new file mode 100644 index 000000000..acab1c5ec --- /dev/null +++ b/src/bio/lite.ts @@ -0,0 +1,15 @@ +/** Bio Lite module — tsb analytics library. */ +export interface Bio liteOptions { tol?: number; maxIter?: number; } +export interface Bio liteResult { values: number[]; converged: boolean; } +export function computeBio lite(data: number[], opts: Bio liteOptions = {}): Bio liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio lite }; diff --git a/src/bio/metabolomics.ts b/src/bio/metabolomics.ts new file mode 100644 index 000000000..599e7880a --- /dev/null +++ b/src/bio/metabolomics.ts @@ -0,0 +1,22 @@ +/** Metabolomics module — tsb analytics library. */ + +/** Options for Metabolomics. */ +export interface MetabolomicsOptions { tol?: number; maxIter?: number; } + +/** Result from Metabolomics. */ +export interface MetabolomicsResult { values: number[]; converged: boolean; } + +/** Compute Metabolomics. */ +export function computeMetabolomics(data: number[], opts: MetabolomicsOptions = {}): MetabolomicsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMetabolomics }; diff --git a/src/bio/migration.ts b/src/bio/migration.ts new file mode 100644 index 000000000..4b3a750e0 --- /dev/null +++ b/src/bio/migration.ts @@ -0,0 +1,22 @@ +/** Migration module — tsb analytics library. */ + +/** Options for Migration. */ +export interface MigrationOptions { tol?: number; maxIter?: number; } + +/** Result from Migration. */ +export interface MigrationResult { values: number[]; converged: boolean; } + +/** Compute Migration. */ +export function computeMigration(data: number[], opts: MigrationOptions = {}): MigrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMigration }; diff --git a/src/bio/mini.ts b/src/bio/mini.ts new file mode 100644 index 000000000..7d3bea7c4 --- /dev/null +++ b/src/bio/mini.ts @@ -0,0 +1,15 @@ +/** Bio Mini module — tsb analytics library. */ +export interface Bio miniOptions { tol?: number; maxIter?: number; } +export interface Bio miniResult { values: number[]; converged: boolean; } +export function computeBio mini(data: number[], opts: Bio miniOptions = {}): Bio miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio mini }; diff --git a/src/bio/next.ts b/src/bio/next.ts new file mode 100644 index 000000000..fd626de49 --- /dev/null +++ b/src/bio/next.ts @@ -0,0 +1,15 @@ +/** Bio Next module — tsb analytics library. */ +export interface Bio nextOptions { tol?: number; maxIter?: number; } +export interface Bio nextResult { values: number[]; converged: boolean; } +export function computeBio next(data: number[], opts: Bio nextOptions = {}): Bio nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio next }; diff --git a/src/bio/online.ts b/src/bio/online.ts new file mode 100644 index 000000000..0648332c5 --- /dev/null +++ b/src/bio/online.ts @@ -0,0 +1,15 @@ +/** Bio Online module — tsb analytics library. */ +export interface Bio onlineOptions { tol?: number; maxIter?: number; } +export interface Bio onlineResult { values: number[]; converged: boolean; } +export function computeBio online(data: number[], opts: Bio onlineOptions = {}): Bio onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio online }; diff --git a/src/bio/ontology.ts b/src/bio/ontology.ts new file mode 100644 index 000000000..2fb2c89cd --- /dev/null +++ b/src/bio/ontology.ts @@ -0,0 +1,22 @@ +/** Ontology module — tsb analytics library. */ + +/** Options for Ontology. */ +export interface OntologyOptions { tol?: number; maxIter?: number; } + +/** Result from Ontology. */ +export interface OntologyResult { values: number[]; converged: boolean; } + +/** Compute Ontology. */ +export function computeOntology(data: number[], opts: OntologyOptions = {}): OntologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeOntology }; diff --git a/src/bio/parallel.ts b/src/bio/parallel.ts new file mode 100644 index 000000000..574eab73b --- /dev/null +++ b/src/bio/parallel.ts @@ -0,0 +1,15 @@ +/** Bio Parallel module — tsb analytics library. */ +export interface Bio parallelOptions { tol?: number; maxIter?: number; } +export interface Bio parallelResult { values: number[]; converged: boolean; } +export function computeBio parallel(data: number[], opts: Bio parallelOptions = {}): Bio parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio parallel }; diff --git a/src/bio/pathway.ts b/src/bio/pathway.ts new file mode 100644 index 000000000..343cb312e --- /dev/null +++ b/src/bio/pathway.ts @@ -0,0 +1,22 @@ +/** Pathway module — tsb analytics library. */ + +/** Options for Pathway. */ +export interface PathwayOptions { tol?: number; maxIter?: number; } + +/** Result from Pathway. */ +export interface PathwayResult { values: number[]; converged: boolean; } + +/** Compute Pathway. */ +export function computePathway(data: number[], opts: PathwayOptions = {}): PathwayResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePathway }; diff --git a/src/bio/phylogenetics.ts b/src/bio/phylogenetics.ts new file mode 100644 index 000000000..88b124fc7 --- /dev/null +++ b/src/bio/phylogenetics.ts @@ -0,0 +1,22 @@ +/** Phylogenetics module — tsb analytics library. */ + +/** Options for Phylogenetics. */ +export interface PhylogeneticsOptions { tol?: number; maxIter?: number; } + +/** Result from Phylogenetics. */ +export interface PhylogeneticsResult { values: number[]; converged: boolean; } + +/** Compute Phylogenetics. */ +export function computePhylogenetics(data: number[], opts: PhylogeneticsOptions = {}): PhylogeneticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePhylogenetics }; diff --git a/src/bio/plus.ts b/src/bio/plus.ts new file mode 100644 index 000000000..0dd830266 --- /dev/null +++ b/src/bio/plus.ts @@ -0,0 +1,15 @@ +/** Bio Plus module — tsb analytics library. */ +export interface Bio plusOptions { tol?: number; maxIter?: number; } +export interface Bio plusResult { values: number[]; converged: boolean; } +export function computeBio plus(data: number[], opts: Bio plusOptions = {}): Bio plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio plus }; diff --git a/src/bio/pro.ts b/src/bio/pro.ts new file mode 100644 index 000000000..13d0b8619 --- /dev/null +++ b/src/bio/pro.ts @@ -0,0 +1,15 @@ +/** Bio Pro module — tsb analytics library. */ +export interface Bio proOptions { tol?: number; maxIter?: number; } +export interface Bio proResult { values: number[]; converged: boolean; } +export function computeBio pro(data: number[], opts: Bio proOptions = {}): Bio proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio pro }; diff --git a/src/bio/protein.ts b/src/bio/protein.ts new file mode 100644 index 000000000..c6995339e --- /dev/null +++ b/src/bio/protein.ts @@ -0,0 +1,22 @@ +/** Protein module — tsb analytics library. */ + +/** Options for Protein. */ +export interface ProteinOptions { tol?: number; maxIter?: number; } + +/** Result from Protein. */ +export interface ProteinResult { values: number[]; converged: boolean; } + +/** Compute Protein. */ +export function computeProtein(data: number[], opts: ProteinOptions = {}): ProteinResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeProtein }; diff --git a/src/bio/proteomics.ts b/src/bio/proteomics.ts new file mode 100644 index 000000000..674f243ef --- /dev/null +++ b/src/bio/proteomics.ts @@ -0,0 +1,22 @@ +/** Proteomics module — tsb analytics library. */ + +/** Options for Proteomics. */ +export interface ProteomicsOptions { tol?: number; maxIter?: number; } + +/** Result from Proteomics. */ +export interface ProteomicsResult { values: number[]; converged: boolean; } + +/** Compute Proteomics. */ +export function computeProteomics(data: number[], opts: ProteomicsOptions = {}): ProteomicsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeProteomics }; diff --git a/src/bio/prs.ts b/src/bio/prs.ts new file mode 100644 index 000000000..69d32e0f7 --- /dev/null +++ b/src/bio/prs.ts @@ -0,0 +1,22 @@ +/** Prs module — tsb analytics library. */ + +/** Options for Prs. */ +export interface PrsOptions { tol?: number; maxIter?: number; } + +/** Result from Prs. */ +export interface PrsResult { values: number[]; converged: boolean; } + +/** Compute Prs. */ +export function computePrs(data: number[], opts: PrsOptions = {}): PrsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePrs }; diff --git a/src/bio/qtl.ts b/src/bio/qtl.ts new file mode 100644 index 000000000..1cfd400eb --- /dev/null +++ b/src/bio/qtl.ts @@ -0,0 +1,22 @@ +/** Qtl module — tsb analytics library. */ + +/** Options for Qtl. */ +export interface QtlOptions { tol?: number; maxIter?: number; } + +/** Result from Qtl. */ +export interface QtlResult { values: number[]; converged: boolean; } + +/** Compute Qtl. */ +export function computeQtl(data: number[], opts: QtlOptions = {}): QtlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeQtl }; diff --git a/src/bio/robust.ts b/src/bio/robust.ts new file mode 100644 index 000000000..5d83e0052 --- /dev/null +++ b/src/bio/robust.ts @@ -0,0 +1,15 @@ +/** Bio Robust module — tsb analytics library. */ +export interface Bio robustOptions { tol?: number; maxIter?: number; } +export interface Bio robustResult { values: number[]; converged: boolean; } +export function computeBio robust(data: number[], opts: Bio robustOptions = {}): Bio robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio robust }; diff --git a/src/bio/selection.ts b/src/bio/selection.ts new file mode 100644 index 000000000..162f83f29 --- /dev/null +++ b/src/bio/selection.ts @@ -0,0 +1,22 @@ +/** Selection module — tsb analytics library. */ + +/** Options for Selection. */ +export interface SelectionOptions { tol?: number; maxIter?: number; } + +/** Result from Selection. */ +export interface SelectionResult { values: number[]; converged: boolean; } + +/** Compute Selection. */ +export function computeSelection(data: number[], opts: SelectionOptions = {}): SelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSelection }; diff --git a/src/bio/sequence.ts b/src/bio/sequence.ts new file mode 100644 index 000000000..3472f1aed --- /dev/null +++ b/src/bio/sequence.ts @@ -0,0 +1,22 @@ +/** Sequence module — tsb analytics library. */ + +/** Options for Sequence. */ +export interface SequenceOptions { tol?: number; maxIter?: number; } + +/** Result from Sequence. */ +export interface SequenceResult { values: number[]; converged: boolean; } + +/** Compute Sequence. */ +export function computeSequence(data: number[], opts: SequenceOptions = {}): SequenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSequence }; diff --git a/src/bio/small.ts b/src/bio/small.ts new file mode 100644 index 000000000..7cbae3078 --- /dev/null +++ b/src/bio/small.ts @@ -0,0 +1,15 @@ +/** Bio Small module — tsb analytics library. */ +export interface Bio smallOptions { tol?: number; maxIter?: number; } +export interface Bio smallResult { values: number[]; converged: boolean; } +export function computeBio small(data: number[], opts: Bio smallOptions = {}): Bio smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio small }; diff --git a/src/bio/snp.ts b/src/bio/snp.ts new file mode 100644 index 000000000..236e506fa --- /dev/null +++ b/src/bio/snp.ts @@ -0,0 +1,22 @@ +/** Snp module — tsb analytics library. */ + +/** Options for Snp. */ +export interface SnpOptions { tol?: number; maxIter?: number; } + +/** Result from Snp. */ +export interface SnpResult { values: number[]; converged: boolean; } + +/** Compute Snp. */ +export function computeSnp(data: number[], opts: SnpOptions = {}): SnpResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSnp }; diff --git a/src/bio/sparse.ts b/src/bio/sparse.ts new file mode 100644 index 000000000..53ed78386 --- /dev/null +++ b/src/bio/sparse.ts @@ -0,0 +1,15 @@ +/** Bio Sparse module — tsb analytics library. */ +export interface Bio sparseOptions { tol?: number; maxIter?: number; } +export interface Bio sparseResult { values: number[]; converged: boolean; } +export function computeBio sparse(data: number[], opts: Bio sparseOptions = {}): Bio sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio sparse }; diff --git a/src/bio/stable.ts b/src/bio/stable.ts new file mode 100644 index 000000000..a954af285 --- /dev/null +++ b/src/bio/stable.ts @@ -0,0 +1,15 @@ +/** Bio Stable module — tsb analytics library. */ +export interface Bio stableOptions { tol?: number; maxIter?: number; } +export interface Bio stableResult { values: number[]; converged: boolean; } +export function computeBio stable(data: number[], opts: Bio stableOptions = {}): Bio stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio stable }; diff --git a/src/bio/streaming.ts b/src/bio/streaming.ts new file mode 100644 index 000000000..a0e3e2509 --- /dev/null +++ b/src/bio/streaming.ts @@ -0,0 +1,15 @@ +/** Bio Streaming module — tsb analytics library. */ +export interface Bio streamingOptions { tol?: number; maxIter?: number; } +export interface Bio streamingResult { values: number[]; converged: boolean; } +export function computeBio streaming(data: number[], opts: Bio streamingOptions = {}): Bio streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio streaming }; diff --git a/src/bio/structure.ts b/src/bio/structure.ts new file mode 100644 index 000000000..162813c5c --- /dev/null +++ b/src/bio/structure.ts @@ -0,0 +1,22 @@ +/** Structure module — tsb analytics library. */ + +/** Options for Structure. */ +export interface StructureOptions { tol?: number; maxIter?: number; } + +/** Result from Structure. */ +export interface StructureResult { values: number[]; converged: boolean; } + +/** Compute Structure. */ +export function computeStructure(data: number[], opts: StructureOptions = {}): StructureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeStructure }; diff --git a/src/bio/transcriptomics.ts b/src/bio/transcriptomics.ts new file mode 100644 index 000000000..505f52ff0 --- /dev/null +++ b/src/bio/transcriptomics.ts @@ -0,0 +1,22 @@ +/** Transcriptomics module — tsb analytics library. */ + +/** Options for Transcriptomics. */ +export interface TranscriptomicsOptions { tol?: number; maxIter?: number; } + +/** Result from Transcriptomics. */ +export interface TranscriptomicsResult { values: number[]; converged: boolean; } + +/** Compute Transcriptomics. */ +export function computeTranscriptomics(data: number[], opts: TranscriptomicsOptions = {}): TranscriptomicsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeTranscriptomics }; diff --git a/src/bio/v2.ts b/src/bio/v2.ts new file mode 100644 index 000000000..26def4442 --- /dev/null +++ b/src/bio/v2.ts @@ -0,0 +1,15 @@ +/** Bio V2 module — tsb analytics library. */ +export interface Bio v2Options { tol?: number; maxIter?: number; } +export interface Bio v2Result { values: number[]; converged: boolean; } +export function computeBio v2(data: number[], opts: Bio v2Options = {}): Bio v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio v2 }; diff --git a/src/bio/v3.ts b/src/bio/v3.ts new file mode 100644 index 000000000..aecb29a22 --- /dev/null +++ b/src/bio/v3.ts @@ -0,0 +1,15 @@ +/** Bio V3 module — tsb analytics library. */ +export interface Bio v3Options { tol?: number; maxIter?: number; } +export interface Bio v3Result { values: number[]; converged: boolean; } +export function computeBio v3(data: number[], opts: Bio v3Options = {}): Bio v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio v3 }; diff --git a/src/bio/variant.ts b/src/bio/variant.ts new file mode 100644 index 000000000..dfaac5633 --- /dev/null +++ b/src/bio/variant.ts @@ -0,0 +1,22 @@ +/** Variant module — tsb analytics library. */ + +/** Options for Variant. */ +export interface VariantOptions { tol?: number; maxIter?: number; } + +/** Result from Variant. */ +export interface VariantResult { values: number[]; converged: boolean; } + +/** Compute Variant. */ +export function computeVariant(data: number[], opts: VariantOptions = {}): VariantResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeVariant }; diff --git a/src/bio/wasm.ts b/src/bio/wasm.ts new file mode 100644 index 000000000..cd659303e --- /dev/null +++ b/src/bio/wasm.ts @@ -0,0 +1,15 @@ +/** Bio Wasm module — tsb analytics library. */ +export interface Bio wasmOptions { tol?: number; maxIter?: number; } +export interface Bio wasmResult { values: number[]; converged: boolean; } +export function computeBio wasm(data: number[], opts: Bio wasmOptions = {}): Bio wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio wasm }; diff --git a/src/bio/xlarge.ts b/src/bio/xlarge.ts new file mode 100644 index 000000000..d050d3656 --- /dev/null +++ b/src/bio/xlarge.ts @@ -0,0 +1,15 @@ +/** Bio Xlarge module — tsb analytics library. */ +export interface Bio xlargeOptions { tol?: number; maxIter?: number; } +export interface Bio xlargeResult { values: number[]; converged: boolean; } +export function computeBio xlarge(data: number[], opts: Bio xlargeOptions = {}): Bio xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBio xlarge }; diff --git a/src/biochemistry_sci/adaptation.ts b/src/biochemistry_sci/adaptation.ts new file mode 100644 index 000000000..801d96318 --- /dev/null +++ b/src/biochemistry_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci adaptation module — tsb analytics library. */ +export interface BiochemistrySciAdaptationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciAdaptationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciAdaptation(data: number[], opts: BiochemistrySciAdaptationOptions = {}): BiochemistrySciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciAdaptation }; diff --git a/src/biochemistry_sci/aggregation.ts b/src/biochemistry_sci/aggregation.ts new file mode 100644 index 000000000..5b130472e --- /dev/null +++ b/src/biochemistry_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci aggregation module — tsb analytics library. */ +export interface BiochemistrySciAggregationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciAggregationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciAggregation(data: number[], opts: BiochemistrySciAggregationOptions = {}): BiochemistrySciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciAggregation }; diff --git a/src/biochemistry_sci/algebra.ts b/src/biochemistry_sci/algebra.ts new file mode 100644 index 000000000..4f2a59abf --- /dev/null +++ b/src/biochemistry_sci/algebra.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci algebra module — tsb analytics library. */ +export interface BiochemistrySciAlgebraOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciAlgebraResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciAlgebra(data: number[], opts: BiochemistrySciAlgebraOptions = {}): BiochemistrySciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciAlgebra }; diff --git a/src/biochemistry_sci/alignment.ts b/src/biochemistry_sci/alignment.ts new file mode 100644 index 000000000..8feacd4da --- /dev/null +++ b/src/biochemistry_sci/alignment.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci alignment module — tsb analytics library. */ +export interface BiochemistrySciAlignmentOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciAlignmentResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciAlignment(data: number[], opts: BiochemistrySciAlignmentOptions = {}): BiochemistrySciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciAlignment }; diff --git a/src/biochemistry_sci/analysis.ts b/src/biochemistry_sci/analysis.ts new file mode 100644 index 000000000..ce251332c --- /dev/null +++ b/src/biochemistry_sci/analysis.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci analysis module — tsb analytics library. */ +export interface BiochemistrySciAnalysisOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciAnalysisResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciAnalysis(data: number[], opts: BiochemistrySciAnalysisOptions = {}): BiochemistrySciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciAnalysis }; diff --git a/src/biochemistry_sci/augmentation.ts b/src/biochemistry_sci/augmentation.ts new file mode 100644 index 000000000..fa15058b7 --- /dev/null +++ b/src/biochemistry_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci augmentation module — tsb analytics library. */ +export interface BiochemistrySciAugmentationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciAugmentationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciAugmentation(data: number[], opts: BiochemistrySciAugmentationOptions = {}): BiochemistrySciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciAugmentation }; diff --git a/src/biochemistry_sci/bagging.ts b/src/biochemistry_sci/bagging.ts new file mode 100644 index 000000000..cd0a81998 --- /dev/null +++ b/src/biochemistry_sci/bagging.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci bagging module — tsb analytics library. */ +export interface BiochemistrySciBaggingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciBaggingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciBagging(data: number[], opts: BiochemistrySciBaggingOptions = {}): BiochemistrySciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciBagging }; diff --git a/src/biochemistry_sci/basis.ts b/src/biochemistry_sci/basis.ts new file mode 100644 index 000000000..2ae4ab5c8 --- /dev/null +++ b/src/biochemistry_sci/basis.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci basis module — tsb analytics library. */ +export interface BiochemistrySciBasisOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciBasisResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciBasis(data: number[], opts: BiochemistrySciBasisOptions = {}): BiochemistrySciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciBasis }; diff --git a/src/biochemistry_sci/benchmarking.ts b/src/biochemistry_sci/benchmarking.ts new file mode 100644 index 000000000..ff3d2cf97 --- /dev/null +++ b/src/biochemistry_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci benchmarking module — tsb analytics library. */ +export interface BiochemistrySciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciBenchmarking(data: number[], opts: BiochemistrySciBenchmarkingOptions = {}): BiochemistrySciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciBenchmarking }; diff --git a/src/biochemistry_sci/blending.ts b/src/biochemistry_sci/blending.ts new file mode 100644 index 000000000..bcc6d3071 --- /dev/null +++ b/src/biochemistry_sci/blending.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci blending module — tsb analytics library. */ +export interface BiochemistrySciBlendingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciBlendingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciBlending(data: number[], opts: BiochemistrySciBlendingOptions = {}): BiochemistrySciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciBlending }; diff --git a/src/biochemistry_sci/boosting.ts b/src/biochemistry_sci/boosting.ts new file mode 100644 index 000000000..cfd7efac2 --- /dev/null +++ b/src/biochemistry_sci/boosting.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci boosting module — tsb analytics library. */ +export interface BiochemistrySciBoostingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciBoostingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciBoosting(data: number[], opts: BiochemistrySciBoostingOptions = {}): BiochemistrySciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciBoosting }; diff --git a/src/biochemistry_sci/bootstrap.ts b/src/biochemistry_sci/bootstrap.ts new file mode 100644 index 000000000..2853bdf91 --- /dev/null +++ b/src/biochemistry_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci bootstrap module — tsb analytics library. */ +export interface BiochemistrySciBootstrapOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciBootstrapResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciBootstrap(data: number[], opts: BiochemistrySciBootstrapOptions = {}): BiochemistrySciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciBootstrap }; diff --git a/src/biochemistry_sci/calculus.ts b/src/biochemistry_sci/calculus.ts new file mode 100644 index 000000000..9ef246fce --- /dev/null +++ b/src/biochemistry_sci/calculus.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci calculus module — tsb analytics library. */ +export interface BiochemistrySciCalculusOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCalculusResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCalculus(data: number[], opts: BiochemistrySciCalculusOptions = {}): BiochemistrySciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCalculus }; diff --git a/src/biochemistry_sci/calibration.ts b/src/biochemistry_sci/calibration.ts new file mode 100644 index 000000000..8bd7ca89f --- /dev/null +++ b/src/biochemistry_sci/calibration.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci calibration module — tsb analytics library. */ +export interface BiochemistrySciCalibrationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCalibrationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCalibration(data: number[], opts: BiochemistrySciCalibrationOptions = {}): BiochemistrySciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCalibration }; diff --git a/src/biochemistry_sci/characterization.ts b/src/biochemistry_sci/characterization.ts new file mode 100644 index 000000000..de81e56c9 --- /dev/null +++ b/src/biochemistry_sci/characterization.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci characterization module — tsb analytics library. */ +export interface BiochemistrySciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCharacterizationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCharacterization(data: number[], opts: BiochemistrySciCharacterizationOptions = {}): BiochemistrySciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCharacterization }; diff --git a/src/biochemistry_sci/classification.ts b/src/biochemistry_sci/classification.ts new file mode 100644 index 000000000..b3fbd81ef --- /dev/null +++ b/src/biochemistry_sci/classification.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci classification module — tsb analytics library. */ +export interface BiochemistrySciClassificationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciClassificationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciClassification(data: number[], opts: BiochemistrySciClassificationOptions = {}): BiochemistrySciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciClassification }; diff --git a/src/biochemistry_sci/clustering.ts b/src/biochemistry_sci/clustering.ts new file mode 100644 index 000000000..db81d9d02 --- /dev/null +++ b/src/biochemistry_sci/clustering.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci clustering module — tsb analytics library. */ +export interface BiochemistrySciClusteringOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciClusteringResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciClustering(data: number[], opts: BiochemistrySciClusteringOptions = {}): BiochemistrySciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciClustering }; diff --git a/src/biochemistry_sci/compression.ts b/src/biochemistry_sci/compression.ts new file mode 100644 index 000000000..23eec74e3 --- /dev/null +++ b/src/biochemistry_sci/compression.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci compression module — tsb analytics library. */ +export interface BiochemistrySciCompressionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCompressionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCompression(data: number[], opts: BiochemistrySciCompressionOptions = {}): BiochemistrySciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCompression }; diff --git a/src/biochemistry_sci/continuous.ts b/src/biochemistry_sci/continuous.ts new file mode 100644 index 000000000..7e8c21d69 --- /dev/null +++ b/src/biochemistry_sci/continuous.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci continuous module — tsb analytics library. */ +export interface BiochemistrySciContinuousOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciContinuousResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciContinuous(data: number[], opts: BiochemistrySciContinuousOptions = {}): BiochemistrySciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciContinuous }; diff --git a/src/biochemistry_sci/control.ts b/src/biochemistry_sci/control.ts new file mode 100644 index 000000000..2141445ae --- /dev/null +++ b/src/biochemistry_sci/control.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci control module — tsb analytics library. */ +export interface BiochemistrySciControlOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciControlResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciControl(data: number[], opts: BiochemistrySciControlOptions = {}): BiochemistrySciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciControl }; diff --git a/src/biochemistry_sci/convergence.ts b/src/biochemistry_sci/convergence.ts new file mode 100644 index 000000000..acc577202 --- /dev/null +++ b/src/biochemistry_sci/convergence.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci convergence module — tsb analytics library. */ +export interface BiochemistrySciConvergenceOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciConvergenceResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciConvergence(data: number[], opts: BiochemistrySciConvergenceOptions = {}): BiochemistrySciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciConvergence }; diff --git a/src/biochemistry_sci/convex.ts b/src/biochemistry_sci/convex.ts new file mode 100644 index 000000000..d1bc34000 --- /dev/null +++ b/src/biochemistry_sci/convex.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci convex module — tsb analytics library. */ +export interface BiochemistrySciConvexOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciConvexResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciConvex(data: number[], opts: BiochemistrySciConvexOptions = {}): BiochemistrySciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciConvex }; diff --git a/src/biochemistry_sci/correlation.ts b/src/biochemistry_sci/correlation.ts new file mode 100644 index 000000000..59c67f4e9 --- /dev/null +++ b/src/biochemistry_sci/correlation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci correlation module — tsb analytics library. */ +export interface BiochemistrySciCorrelationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCorrelationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCorrelation(data: number[], opts: BiochemistrySciCorrelationOptions = {}): BiochemistrySciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCorrelation }; diff --git a/src/biochemistry_sci/covariance.ts b/src/biochemistry_sci/covariance.ts new file mode 100644 index 000000000..9c86022e1 --- /dev/null +++ b/src/biochemistry_sci/covariance.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci covariance module — tsb analytics library. */ +export interface BiochemistrySciCovarianceOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCovarianceResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCovariance(data: number[], opts: BiochemistrySciCovarianceOptions = {}): BiochemistrySciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCovariance }; diff --git a/src/biochemistry_sci/cross_validation.ts b/src/biochemistry_sci/cross_validation.ts new file mode 100644 index 000000000..f4cd77dc6 --- /dev/null +++ b/src/biochemistry_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci cross_validation module — tsb analytics library. */ +export interface BiochemistrySciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciCrossValidationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciCrossValidation(data: number[], opts: BiochemistrySciCrossValidationOptions = {}): BiochemistrySciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciCrossValidation }; diff --git a/src/biochemistry_sci/decoding.ts b/src/biochemistry_sci/decoding.ts new file mode 100644 index 000000000..453e8f6ec --- /dev/null +++ b/src/biochemistry_sci/decoding.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci decoding module — tsb analytics library. */ +export interface BiochemistrySciDecodingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDecodingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDecoding(data: number[], opts: BiochemistrySciDecodingOptions = {}): BiochemistrySciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDecoding }; diff --git a/src/biochemistry_sci/decomposition.ts b/src/biochemistry_sci/decomposition.ts new file mode 100644 index 000000000..8056b67cb --- /dev/null +++ b/src/biochemistry_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci decomposition module — tsb analytics library. */ +export interface BiochemistrySciDecompositionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDecompositionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDecomposition(data: number[], opts: BiochemistrySciDecompositionOptions = {}): BiochemistrySciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDecomposition }; diff --git a/src/biochemistry_sci/detection.ts b/src/biochemistry_sci/detection.ts new file mode 100644 index 000000000..f3ce77478 --- /dev/null +++ b/src/biochemistry_sci/detection.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci detection module — tsb analytics library. */ +export interface BiochemistrySciDetectionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDetectionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDetection(data: number[], opts: BiochemistrySciDetectionOptions = {}): BiochemistrySciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDetection }; diff --git a/src/biochemistry_sci/deterministic.ts b/src/biochemistry_sci/deterministic.ts new file mode 100644 index 000000000..ef059813f --- /dev/null +++ b/src/biochemistry_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci deterministic module — tsb analytics library. */ +export interface BiochemistrySciDeterministicOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDeterministicResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDeterministic(data: number[], opts: BiochemistrySciDeterministicOptions = {}): BiochemistrySciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDeterministic }; diff --git a/src/biochemistry_sci/diagnostics.ts b/src/biochemistry_sci/diagnostics.ts new file mode 100644 index 000000000..08c6c93fa --- /dev/null +++ b/src/biochemistry_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci diagnostics module — tsb analytics library. */ +export interface BiochemistrySciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDiagnostics(data: number[], opts: BiochemistrySciDiagnosticsOptions = {}): BiochemistrySciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDiagnostics }; diff --git a/src/biochemistry_sci/differential.ts b/src/biochemistry_sci/differential.ts new file mode 100644 index 000000000..264393a46 --- /dev/null +++ b/src/biochemistry_sci/differential.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci differential module — tsb analytics library. */ +export interface BiochemistrySciDifferentialOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDifferentialResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDifferential(data: number[], opts: BiochemistrySciDifferentialOptions = {}): BiochemistrySciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDifferential }; diff --git a/src/biochemistry_sci/discrete.ts b/src/biochemistry_sci/discrete.ts new file mode 100644 index 000000000..98bb2eee2 --- /dev/null +++ b/src/biochemistry_sci/discrete.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci discrete module — tsb analytics library. */ +export interface BiochemistrySciDiscreteOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDiscreteResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDiscrete(data: number[], opts: BiochemistrySciDiscreteOptions = {}): BiochemistrySciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDiscrete }; diff --git a/src/biochemistry_sci/distribution.ts b/src/biochemistry_sci/distribution.ts new file mode 100644 index 000000000..9516307be --- /dev/null +++ b/src/biochemistry_sci/distribution.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci distribution module — tsb analytics library. */ +export interface BiochemistrySciDistributionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDistributionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDistribution(data: number[], opts: BiochemistrySciDistributionOptions = {}): BiochemistrySciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDistribution }; diff --git a/src/biochemistry_sci/dynamic.ts b/src/biochemistry_sci/dynamic.ts new file mode 100644 index 000000000..6da0ccd70 --- /dev/null +++ b/src/biochemistry_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci dynamic module — tsb analytics library. */ +export interface BiochemistrySciDynamicOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciDynamicResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciDynamic(data: number[], opts: BiochemistrySciDynamicOptions = {}): BiochemistrySciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciDynamic }; diff --git a/src/biochemistry_sci/embedding.ts b/src/biochemistry_sci/embedding.ts new file mode 100644 index 000000000..67c502cff --- /dev/null +++ b/src/biochemistry_sci/embedding.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci embedding module — tsb analytics library. */ +export interface BiochemistrySciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciEmbeddingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciEmbedding(data: number[], opts: BiochemistrySciEmbeddingOptions = {}): BiochemistrySciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciEmbedding }; diff --git a/src/biochemistry_sci/encoding.ts b/src/biochemistry_sci/encoding.ts new file mode 100644 index 000000000..007f79cba --- /dev/null +++ b/src/biochemistry_sci/encoding.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci encoding module — tsb analytics library. */ +export interface BiochemistrySciEncodingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciEncodingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciEncoding(data: number[], opts: BiochemistrySciEncodingOptions = {}): BiochemistrySciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciEncoding }; diff --git a/src/biochemistry_sci/ensemble.ts b/src/biochemistry_sci/ensemble.ts new file mode 100644 index 000000000..8654b7698 --- /dev/null +++ b/src/biochemistry_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci ensemble module — tsb analytics library. */ +export interface BiochemistrySciEnsembleOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciEnsembleResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciEnsemble(data: number[], opts: BiochemistrySciEnsembleOptions = {}): BiochemistrySciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciEnsemble }; diff --git a/src/biochemistry_sci/estimation.ts b/src/biochemistry_sci/estimation.ts new file mode 100644 index 000000000..3f89246fa --- /dev/null +++ b/src/biochemistry_sci/estimation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci estimation module — tsb analytics library. */ +export interface BiochemistrySciEstimationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciEstimationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciEstimation(data: number[], opts: BiochemistrySciEstimationOptions = {}): BiochemistrySciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciEstimation }; diff --git a/src/biochemistry_sci/evaluation.ts b/src/biochemistry_sci/evaluation.ts new file mode 100644 index 000000000..12d7938e7 --- /dev/null +++ b/src/biochemistry_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci evaluation module — tsb analytics library. */ +export interface BiochemistrySciEvaluationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciEvaluationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciEvaluation(data: number[], opts: BiochemistrySciEvaluationOptions = {}): BiochemistrySciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciEvaluation }; diff --git a/src/biochemistry_sci/extrapolation.ts b/src/biochemistry_sci/extrapolation.ts new file mode 100644 index 000000000..3feb7a670 --- /dev/null +++ b/src/biochemistry_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci extrapolation module — tsb analytics library. */ +export interface BiochemistrySciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciExtrapolationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciExtrapolation(data: number[], opts: BiochemistrySciExtrapolationOptions = {}): BiochemistrySciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciExtrapolation }; diff --git a/src/biochemistry_sci/features.ts b/src/biochemistry_sci/features.ts new file mode 100644 index 000000000..674cd39d2 --- /dev/null +++ b/src/biochemistry_sci/features.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci features module — tsb analytics library. */ +export interface BiochemistrySciFeaturesOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciFeaturesResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciFeatures(data: number[], opts: BiochemistrySciFeaturesOptions = {}): BiochemistrySciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciFeatures }; diff --git a/src/biochemistry_sci/feedback.ts b/src/biochemistry_sci/feedback.ts new file mode 100644 index 000000000..e18dd53a4 --- /dev/null +++ b/src/biochemistry_sci/feedback.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci feedback module — tsb analytics library. */ +export interface BiochemistrySciFeedbackOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciFeedbackResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciFeedback(data: number[], opts: BiochemistrySciFeedbackOptions = {}): BiochemistrySciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciFeedback }; diff --git a/src/biochemistry_sci/filtering.ts b/src/biochemistry_sci/filtering.ts new file mode 100644 index 000000000..fcc96914c --- /dev/null +++ b/src/biochemistry_sci/filtering.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci filtering module — tsb analytics library. */ +export interface BiochemistrySciFilteringOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciFilteringResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciFiltering(data: number[], opts: BiochemistrySciFilteringOptions = {}): BiochemistrySciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciFiltering }; diff --git a/src/biochemistry_sci/fourier.ts b/src/biochemistry_sci/fourier.ts new file mode 100644 index 000000000..1bcba8c6b --- /dev/null +++ b/src/biochemistry_sci/fourier.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci fourier module — tsb analytics library. */ +export interface BiochemistrySciFourierOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciFourierResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciFourier(data: number[], opts: BiochemistrySciFourierOptions = {}): BiochemistrySciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciFourier }; diff --git a/src/biochemistry_sci/fusion.ts b/src/biochemistry_sci/fusion.ts new file mode 100644 index 000000000..56a7353ca --- /dev/null +++ b/src/biochemistry_sci/fusion.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci fusion module — tsb analytics library. */ +export interface BiochemistrySciFusionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciFusionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciFusion(data: number[], opts: BiochemistrySciFusionOptions = {}): BiochemistrySciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciFusion }; diff --git a/src/biochemistry_sci/generation.ts b/src/biochemistry_sci/generation.ts new file mode 100644 index 000000000..02f53f977 --- /dev/null +++ b/src/biochemistry_sci/generation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci generation module — tsb analytics library. */ +export interface BiochemistrySciGenerationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciGenerationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciGeneration(data: number[], opts: BiochemistrySciGenerationOptions = {}): BiochemistrySciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciGeneration }; diff --git a/src/biochemistry_sci/geometry.ts b/src/biochemistry_sci/geometry.ts new file mode 100644 index 000000000..45e47e28c --- /dev/null +++ b/src/biochemistry_sci/geometry.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci geometry module — tsb analytics library. */ +export interface BiochemistrySciGeometryOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciGeometryResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciGeometry(data: number[], opts: BiochemistrySciGeometryOptions = {}): BiochemistrySciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciGeometry }; diff --git a/src/biochemistry_sci/gradient.ts b/src/biochemistry_sci/gradient.ts new file mode 100644 index 000000000..1cb4e1e52 --- /dev/null +++ b/src/biochemistry_sci/gradient.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci gradient module — tsb analytics library. */ +export interface BiochemistrySciGradientOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciGradientResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciGradient(data: number[], opts: BiochemistrySciGradientOptions = {}): BiochemistrySciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciGradient }; diff --git a/src/biochemistry_sci/hessian.ts b/src/biochemistry_sci/hessian.ts new file mode 100644 index 000000000..38da601c8 --- /dev/null +++ b/src/biochemistry_sci/hessian.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci hessian module — tsb analytics library. */ +export interface BiochemistrySciHessianOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciHessianResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciHessian(data: number[], opts: BiochemistrySciHessianOptions = {}): BiochemistrySciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciHessian }; diff --git a/src/biochemistry_sci/hypothesis.ts b/src/biochemistry_sci/hypothesis.ts new file mode 100644 index 000000000..e669654b9 --- /dev/null +++ b/src/biochemistry_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci hypothesis module — tsb analytics library. */ +export interface BiochemistrySciHypothesisOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciHypothesisResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciHypothesis(data: number[], opts: BiochemistrySciHypothesisOptions = {}): BiochemistrySciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciHypothesis }; diff --git a/src/biochemistry_sci/inference.ts b/src/biochemistry_sci/inference.ts new file mode 100644 index 000000000..e013b6451 --- /dev/null +++ b/src/biochemistry_sci/inference.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci inference module — tsb analytics library. */ +export interface BiochemistrySciInferenceOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciInferenceResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciInference(data: number[], opts: BiochemistrySciInferenceOptions = {}): BiochemistrySciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciInference }; diff --git a/src/biochemistry_sci/inference2.ts b/src/biochemistry_sci/inference2.ts new file mode 100644 index 000000000..68286c898 --- /dev/null +++ b/src/biochemistry_sci/inference2.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci inference2 module — tsb analytics library. */ +export interface BiochemistrySciInferenceOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciInferenceResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciInference(data: number[], opts: BiochemistrySciInferenceOptions = {}): BiochemistrySciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciInference }; diff --git a/src/biochemistry_sci/integral.ts b/src/biochemistry_sci/integral.ts new file mode 100644 index 000000000..efccd8bcf --- /dev/null +++ b/src/biochemistry_sci/integral.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci integral module — tsb analytics library. */ +export interface BiochemistrySciIntegralOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciIntegralResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciIntegral(data: number[], opts: BiochemistrySciIntegralOptions = {}): BiochemistrySciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciIntegral }; diff --git a/src/biochemistry_sci/integration.ts b/src/biochemistry_sci/integration.ts new file mode 100644 index 000000000..f979e8042 --- /dev/null +++ b/src/biochemistry_sci/integration.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci integration module — tsb analytics library. */ +export interface BiochemistrySciIntegrationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciIntegrationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciIntegration(data: number[], opts: BiochemistrySciIntegrationOptions = {}): BiochemistrySciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciIntegration }; diff --git a/src/biochemistry_sci/interpolation.ts b/src/biochemistry_sci/interpolation.ts new file mode 100644 index 000000000..ea1b854d9 --- /dev/null +++ b/src/biochemistry_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci interpolation module — tsb analytics library. */ +export interface BiochemistrySciInterpolationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciInterpolationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciInterpolation(data: number[], opts: BiochemistrySciInterpolationOptions = {}): BiochemistrySciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciInterpolation }; diff --git a/src/biochemistry_sci/jacobian.ts b/src/biochemistry_sci/jacobian.ts new file mode 100644 index 000000000..61d595dfd --- /dev/null +++ b/src/biochemistry_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci jacobian module — tsb analytics library. */ +export interface BiochemistrySciJacobianOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciJacobianResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciJacobian(data: number[], opts: BiochemistrySciJacobianOptions = {}): BiochemistrySciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciJacobian }; diff --git a/src/biochemistry_sci/kernel.ts b/src/biochemistry_sci/kernel.ts new file mode 100644 index 000000000..aca77b65c --- /dev/null +++ b/src/biochemistry_sci/kernel.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci kernel module — tsb analytics library. */ +export interface BiochemistrySciKernelOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciKernelResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciKernel(data: number[], opts: BiochemistrySciKernelOptions = {}): BiochemistrySciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciKernel }; diff --git a/src/biochemistry_sci/laplacian.ts b/src/biochemistry_sci/laplacian.ts new file mode 100644 index 000000000..cb1d93b24 --- /dev/null +++ b/src/biochemistry_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci laplacian module — tsb analytics library. */ +export interface BiochemistrySciLaplacianOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciLaplacianResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciLaplacian(data: number[], opts: BiochemistrySciLaplacianOptions = {}): BiochemistrySciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciLaplacian }; diff --git a/src/biochemistry_sci/learning.ts b/src/biochemistry_sci/learning.ts new file mode 100644 index 000000000..b4bb235a2 --- /dev/null +++ b/src/biochemistry_sci/learning.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci learning module — tsb analytics library. */ +export interface BiochemistrySciLearningOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciLearningResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciLearning(data: number[], opts: BiochemistrySciLearningOptions = {}): BiochemistrySciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciLearning }; diff --git a/src/biochemistry_sci/linear.ts b/src/biochemistry_sci/linear.ts new file mode 100644 index 000000000..eb04b166c --- /dev/null +++ b/src/biochemistry_sci/linear.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci linear module — tsb analytics library. */ +export interface BiochemistrySciLinearOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciLinearResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciLinear(data: number[], opts: BiochemistrySciLinearOptions = {}): BiochemistrySciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciLinear }; diff --git a/src/biochemistry_sci/manifold.ts b/src/biochemistry_sci/manifold.ts new file mode 100644 index 000000000..a52bf9895 --- /dev/null +++ b/src/biochemistry_sci/manifold.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci manifold module — tsb analytics library. */ +export interface BiochemistrySciManifoldOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciManifoldResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciManifold(data: number[], opts: BiochemistrySciManifoldOptions = {}): BiochemistrySciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciManifold }; diff --git a/src/biochemistry_sci/matching.ts b/src/biochemistry_sci/matching.ts new file mode 100644 index 000000000..7f5e3d15f --- /dev/null +++ b/src/biochemistry_sci/matching.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci matching module — tsb analytics library. */ +export interface BiochemistrySciMatchingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciMatchingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciMatching(data: number[], opts: BiochemistrySciMatchingOptions = {}): BiochemistrySciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciMatching }; diff --git a/src/biochemistry_sci/measurement.ts b/src/biochemistry_sci/measurement.ts new file mode 100644 index 000000000..8aeede0d4 --- /dev/null +++ b/src/biochemistry_sci/measurement.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci measurement module — tsb analytics library. */ +export interface BiochemistrySciMeasurementOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciMeasurementResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciMeasurement(data: number[], opts: BiochemistrySciMeasurementOptions = {}): BiochemistrySciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciMeasurement }; diff --git a/src/biochemistry_sci/metrics.ts b/src/biochemistry_sci/metrics.ts new file mode 100644 index 000000000..ea2d2d61e --- /dev/null +++ b/src/biochemistry_sci/metrics.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci metrics module — tsb analytics library. */ +export interface BiochemistrySciMetricsOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciMetricsResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciMetrics(data: number[], opts: BiochemistrySciMetricsOptions = {}): BiochemistrySciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciMetrics }; diff --git a/src/biochemistry_sci/modeling.ts b/src/biochemistry_sci/modeling.ts new file mode 100644 index 000000000..18ccb445c --- /dev/null +++ b/src/biochemistry_sci/modeling.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci modeling module — tsb analytics library. */ +export interface BiochemistrySciModelingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciModelingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciModeling(data: number[], opts: BiochemistrySciModelingOptions = {}): BiochemistrySciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciModeling }; diff --git a/src/biochemistry_sci/monitoring.ts b/src/biochemistry_sci/monitoring.ts new file mode 100644 index 000000000..5946b9a08 --- /dev/null +++ b/src/biochemistry_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci monitoring module — tsb analytics library. */ +export interface BiochemistrySciMonitoringOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciMonitoringResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciMonitoring(data: number[], opts: BiochemistrySciMonitoringOptions = {}): BiochemistrySciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciMonitoring }; diff --git a/src/biochemistry_sci/nonlinear.ts b/src/biochemistry_sci/nonlinear.ts new file mode 100644 index 000000000..2a0fa91fe --- /dev/null +++ b/src/biochemistry_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci nonlinear module — tsb analytics library. */ +export interface BiochemistrySciNonlinearOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciNonlinearResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciNonlinear(data: number[], opts: BiochemistrySciNonlinearOptions = {}): BiochemistrySciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciNonlinear }; diff --git a/src/biochemistry_sci/normalization.ts b/src/biochemistry_sci/normalization.ts new file mode 100644 index 000000000..8938db610 --- /dev/null +++ b/src/biochemistry_sci/normalization.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci normalization module — tsb analytics library. */ +export interface BiochemistrySciNormalizationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciNormalizationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciNormalization(data: number[], opts: BiochemistrySciNormalizationOptions = {}): BiochemistrySciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciNormalization }; diff --git a/src/biochemistry_sci/optimization.ts b/src/biochemistry_sci/optimization.ts new file mode 100644 index 000000000..178d973d4 --- /dev/null +++ b/src/biochemistry_sci/optimization.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci optimization module — tsb analytics library. */ +export interface BiochemistrySciOptimizationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciOptimizationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciOptimization(data: number[], opts: BiochemistrySciOptimizationOptions = {}): BiochemistrySciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciOptimization }; diff --git a/src/biochemistry_sci/patterns.ts b/src/biochemistry_sci/patterns.ts new file mode 100644 index 000000000..e5eda314f --- /dev/null +++ b/src/biochemistry_sci/patterns.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci patterns module — tsb analytics library. */ +export interface BiochemistrySciPatternsOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciPatternsResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciPatterns(data: number[], opts: BiochemistrySciPatternsOptions = {}): BiochemistrySciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciPatterns }; diff --git a/src/biochemistry_sci/permutation.ts b/src/biochemistry_sci/permutation.ts new file mode 100644 index 000000000..2db7f2426 --- /dev/null +++ b/src/biochemistry_sci/permutation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci permutation module — tsb analytics library. */ +export interface BiochemistrySciPermutationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciPermutationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciPermutation(data: number[], opts: BiochemistrySciPermutationOptions = {}): BiochemistrySciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciPermutation }; diff --git a/src/biochemistry_sci/prediction.ts b/src/biochemistry_sci/prediction.ts new file mode 100644 index 000000000..7a25c6c9b --- /dev/null +++ b/src/biochemistry_sci/prediction.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci prediction module — tsb analytics library. */ +export interface BiochemistrySciPredictionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciPredictionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciPrediction(data: number[], opts: BiochemistrySciPredictionOptions = {}): BiochemistrySciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciPrediction }; diff --git a/src/biochemistry_sci/processing.ts b/src/biochemistry_sci/processing.ts new file mode 100644 index 000000000..7dfb19208 --- /dev/null +++ b/src/biochemistry_sci/processing.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci processing module — tsb analytics library. */ +export interface BiochemistrySciProcessingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciProcessingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciProcessing(data: number[], opts: BiochemistrySciProcessingOptions = {}): BiochemistrySciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciProcessing }; diff --git a/src/biochemistry_sci/profiling.ts b/src/biochemistry_sci/profiling.ts new file mode 100644 index 000000000..e45b0702e --- /dev/null +++ b/src/biochemistry_sci/profiling.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci profiling module — tsb analytics library. */ +export interface BiochemistrySciProfilingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciProfilingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciProfiling(data: number[], opts: BiochemistrySciProfilingOptions = {}): BiochemistrySciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciProfiling }; diff --git a/src/biochemistry_sci/projection.ts b/src/biochemistry_sci/projection.ts new file mode 100644 index 000000000..c6b4fe93b --- /dev/null +++ b/src/biochemistry_sci/projection.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci projection module — tsb analytics library. */ +export interface BiochemistrySciProjectionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciProjectionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciProjection(data: number[], opts: BiochemistrySciProjectionOptions = {}): BiochemistrySciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciProjection }; diff --git a/src/biochemistry_sci/ranking.ts b/src/biochemistry_sci/ranking.ts new file mode 100644 index 000000000..ac45fc07b --- /dev/null +++ b/src/biochemistry_sci/ranking.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci ranking module — tsb analytics library. */ +export interface BiochemistrySciRankingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciRankingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciRanking(data: number[], opts: BiochemistrySciRankingOptions = {}): BiochemistrySciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciRanking }; diff --git a/src/biochemistry_sci/reconstruction.ts b/src/biochemistry_sci/reconstruction.ts new file mode 100644 index 000000000..c5fa09c11 --- /dev/null +++ b/src/biochemistry_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci reconstruction module — tsb analytics library. */ +export interface BiochemistrySciReconstructionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciReconstructionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciReconstruction(data: number[], opts: BiochemistrySciReconstructionOptions = {}): BiochemistrySciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciReconstruction }; diff --git a/src/biochemistry_sci/registration.ts b/src/biochemistry_sci/registration.ts new file mode 100644 index 000000000..80cd02fb4 --- /dev/null +++ b/src/biochemistry_sci/registration.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci registration module — tsb analytics library. */ +export interface BiochemistrySciRegistrationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciRegistrationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciRegistration(data: number[], opts: BiochemistrySciRegistrationOptions = {}): BiochemistrySciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciRegistration }; diff --git a/src/biochemistry_sci/regression.ts b/src/biochemistry_sci/regression.ts new file mode 100644 index 000000000..d85c4e86e --- /dev/null +++ b/src/biochemistry_sci/regression.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci regression module — tsb analytics library. */ +export interface BiochemistrySciRegressionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciRegressionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciRegression(data: number[], opts: BiochemistrySciRegressionOptions = {}): BiochemistrySciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciRegression }; diff --git a/src/biochemistry_sci/regularization.ts b/src/biochemistry_sci/regularization.ts new file mode 100644 index 000000000..5bdd14f50 --- /dev/null +++ b/src/biochemistry_sci/regularization.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci regularization module — tsb analytics library. */ +export interface BiochemistrySciRegularizationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciRegularizationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciRegularization(data: number[], opts: BiochemistrySciRegularizationOptions = {}): BiochemistrySciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciRegularization }; diff --git a/src/biochemistry_sci/robustness.ts b/src/biochemistry_sci/robustness.ts new file mode 100644 index 000000000..525415bde --- /dev/null +++ b/src/biochemistry_sci/robustness.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci robustness module — tsb analytics library. */ +export interface BiochemistrySciRobustnessOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciRobustnessResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciRobustness(data: number[], opts: BiochemistrySciRobustnessOptions = {}): BiochemistrySciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciRobustness }; diff --git a/src/biochemistry_sci/sampling.ts b/src/biochemistry_sci/sampling.ts new file mode 100644 index 000000000..cd0b5cb7b --- /dev/null +++ b/src/biochemistry_sci/sampling.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci sampling module — tsb analytics library. */ +export interface BiochemistrySciSamplingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSamplingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSampling(data: number[], opts: BiochemistrySciSamplingOptions = {}): BiochemistrySciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSampling }; diff --git a/src/biochemistry_sci/sampling2.ts b/src/biochemistry_sci/sampling2.ts new file mode 100644 index 000000000..e589a456c --- /dev/null +++ b/src/biochemistry_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci sampling2 module — tsb analytics library. */ +export interface BiochemistrySciSamplingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSamplingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSampling(data: number[], opts: BiochemistrySciSamplingOptions = {}): BiochemistrySciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSampling }; diff --git a/src/biochemistry_sci/scaling.ts b/src/biochemistry_sci/scaling.ts new file mode 100644 index 000000000..249e9b37c --- /dev/null +++ b/src/biochemistry_sci/scaling.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci scaling module — tsb analytics library. */ +export interface BiochemistrySciScalingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciScalingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciScaling(data: number[], opts: BiochemistrySciScalingOptions = {}): BiochemistrySciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciScaling }; diff --git a/src/biochemistry_sci/scoring.ts b/src/biochemistry_sci/scoring.ts new file mode 100644 index 000000000..f8089dab1 --- /dev/null +++ b/src/biochemistry_sci/scoring.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci scoring module — tsb analytics library. */ +export interface BiochemistrySciScoringOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciScoringResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciScoring(data: number[], opts: BiochemistrySciScoringOptions = {}): BiochemistrySciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciScoring }; diff --git a/src/biochemistry_sci/segmentation.ts b/src/biochemistry_sci/segmentation.ts new file mode 100644 index 000000000..9e5e7cce0 --- /dev/null +++ b/src/biochemistry_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci segmentation module — tsb analytics library. */ +export interface BiochemistrySciSegmentationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSegmentationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSegmentation(data: number[], opts: BiochemistrySciSegmentationOptions = {}): BiochemistrySciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSegmentation }; diff --git a/src/biochemistry_sci/selection.ts b/src/biochemistry_sci/selection.ts new file mode 100644 index 000000000..4138a4048 --- /dev/null +++ b/src/biochemistry_sci/selection.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci selection module — tsb analytics library. */ +export interface BiochemistrySciSelectionOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSelectionResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSelection(data: number[], opts: BiochemistrySciSelectionOptions = {}): BiochemistrySciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSelection }; diff --git a/src/biochemistry_sci/sensitivity.ts b/src/biochemistry_sci/sensitivity.ts new file mode 100644 index 000000000..24acd6b2c --- /dev/null +++ b/src/biochemistry_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci sensitivity module — tsb analytics library. */ +export interface BiochemistrySciSensitivityOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSensitivityResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSensitivity(data: number[], opts: BiochemistrySciSensitivityOptions = {}): BiochemistrySciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSensitivity }; diff --git a/src/biochemistry_sci/simulation.ts b/src/biochemistry_sci/simulation.ts new file mode 100644 index 000000000..3cc49d9fb --- /dev/null +++ b/src/biochemistry_sci/simulation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci simulation module — tsb analytics library. */ +export interface BiochemistrySciSimulationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSimulationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSimulation(data: number[], opts: BiochemistrySciSimulationOptions = {}): BiochemistrySciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSimulation }; diff --git a/src/biochemistry_sci/smoothing.ts b/src/biochemistry_sci/smoothing.ts new file mode 100644 index 000000000..36cafb329 --- /dev/null +++ b/src/biochemistry_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci smoothing module — tsb analytics library. */ +export interface BiochemistrySciSmoothingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSmoothingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSmoothing(data: number[], opts: BiochemistrySciSmoothingOptions = {}): BiochemistrySciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSmoothing }; diff --git a/src/biochemistry_sci/stability.ts b/src/biochemistry_sci/stability.ts new file mode 100644 index 000000000..aa209ed2e --- /dev/null +++ b/src/biochemistry_sci/stability.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci stability module — tsb analytics library. */ +export interface BiochemistrySciStabilityOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciStabilityResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciStability(data: number[], opts: BiochemistrySciStabilityOptions = {}): BiochemistrySciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciStability }; diff --git a/src/biochemistry_sci/stacking.ts b/src/biochemistry_sci/stacking.ts new file mode 100644 index 000000000..f9ccf5f7c --- /dev/null +++ b/src/biochemistry_sci/stacking.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci stacking module — tsb analytics library. */ +export interface BiochemistrySciStackingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciStackingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciStacking(data: number[], opts: BiochemistrySciStackingOptions = {}): BiochemistrySciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciStacking }; diff --git a/src/biochemistry_sci/standardization.ts b/src/biochemistry_sci/standardization.ts new file mode 100644 index 000000000..ea679f859 --- /dev/null +++ b/src/biochemistry_sci/standardization.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci standardization module — tsb analytics library. */ +export interface BiochemistrySciStandardizationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciStandardizationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciStandardization(data: number[], opts: BiochemistrySciStandardizationOptions = {}): BiochemistrySciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciStandardization }; diff --git a/src/biochemistry_sci/static.ts b/src/biochemistry_sci/static.ts new file mode 100644 index 000000000..fd2380e55 --- /dev/null +++ b/src/biochemistry_sci/static.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci static module — tsb analytics library. */ +export interface BiochemistrySciStaticOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciStaticResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciStatic(data: number[], opts: BiochemistrySciStaticOptions = {}): BiochemistrySciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciStatic }; diff --git a/src/biochemistry_sci/stochastic.ts b/src/biochemistry_sci/stochastic.ts new file mode 100644 index 000000000..ed9b0a0e7 --- /dev/null +++ b/src/biochemistry_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci stochastic module — tsb analytics library. */ +export interface BiochemistrySciStochasticOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciStochasticResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciStochastic(data: number[], opts: BiochemistrySciStochasticOptions = {}): BiochemistrySciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciStochastic }; diff --git a/src/biochemistry_sci/synthesis.ts b/src/biochemistry_sci/synthesis.ts new file mode 100644 index 000000000..7d051ff4e --- /dev/null +++ b/src/biochemistry_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci synthesis module — tsb analytics library. */ +export interface BiochemistrySciSynthesisOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciSynthesisResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciSynthesis(data: number[], opts: BiochemistrySciSynthesisOptions = {}): BiochemistrySciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciSynthesis }; diff --git a/src/biochemistry_sci/topology.ts b/src/biochemistry_sci/topology.ts new file mode 100644 index 000000000..b9239ae4a --- /dev/null +++ b/src/biochemistry_sci/topology.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci topology module — tsb analytics library. */ +export interface BiochemistrySciTopologyOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciTopologyResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciTopology(data: number[], opts: BiochemistrySciTopologyOptions = {}): BiochemistrySciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciTopology }; diff --git a/src/biochemistry_sci/tracking.ts b/src/biochemistry_sci/tracking.ts new file mode 100644 index 000000000..a685069b4 --- /dev/null +++ b/src/biochemistry_sci/tracking.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci tracking module — tsb analytics library. */ +export interface BiochemistrySciTrackingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciTrackingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciTracking(data: number[], opts: BiochemistrySciTrackingOptions = {}): BiochemistrySciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciTracking }; diff --git a/src/biochemistry_sci/transform.ts b/src/biochemistry_sci/transform.ts new file mode 100644 index 000000000..85358d3a3 --- /dev/null +++ b/src/biochemistry_sci/transform.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci transform module — tsb analytics library. */ +export interface BiochemistrySciTransformOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciTransformResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciTransform(data: number[], opts: BiochemistrySciTransformOptions = {}): BiochemistrySciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciTransform }; diff --git a/src/biochemistry_sci/uncertainty.ts b/src/biochemistry_sci/uncertainty.ts new file mode 100644 index 000000000..fd41a2933 --- /dev/null +++ b/src/biochemistry_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci uncertainty module — tsb analytics library. */ +export interface BiochemistrySciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciUncertaintyResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciUncertainty(data: number[], opts: BiochemistrySciUncertaintyOptions = {}): BiochemistrySciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciUncertainty }; diff --git a/src/biochemistry_sci/validation.ts b/src/biochemistry_sci/validation.ts new file mode 100644 index 000000000..6f7f5c8cf --- /dev/null +++ b/src/biochemistry_sci/validation.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci validation module — tsb analytics library. */ +export interface BiochemistrySciValidationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciValidationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciValidation(data: number[], opts: BiochemistrySciValidationOptions = {}): BiochemistrySciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciValidation }; diff --git a/src/biochemistry_sci/verification.ts b/src/biochemistry_sci/verification.ts new file mode 100644 index 000000000..c5dfd6b4e --- /dev/null +++ b/src/biochemistry_sci/verification.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci verification module — tsb analytics library. */ +export interface BiochemistrySciVerificationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciVerificationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciVerification(data: number[], opts: BiochemistrySciVerificationOptions = {}): BiochemistrySciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciVerification }; diff --git a/src/biochemistry_sci/visualization.ts b/src/biochemistry_sci/visualization.ts new file mode 100644 index 000000000..ac1fd5760 --- /dev/null +++ b/src/biochemistry_sci/visualization.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci visualization module — tsb analytics library. */ +export interface BiochemistrySciVisualizationOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciVisualizationResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciVisualization(data: number[], opts: BiochemistrySciVisualizationOptions = {}): BiochemistrySciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciVisualization }; diff --git a/src/biochemistry_sci/voting.ts b/src/biochemistry_sci/voting.ts new file mode 100644 index 000000000..002581529 --- /dev/null +++ b/src/biochemistry_sci/voting.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci voting module — tsb analytics library. */ +export interface BiochemistrySciVotingOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciVotingResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciVoting(data: number[], opts: BiochemistrySciVotingOptions = {}): BiochemistrySciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciVoting }; diff --git a/src/biochemistry_sci/wavelet.ts b/src/biochemistry_sci/wavelet.ts new file mode 100644 index 000000000..30b1bad8f --- /dev/null +++ b/src/biochemistry_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** biochemistry_sci wavelet module — tsb analytics library. */ +export interface BiochemistrySciWaveletOptions { tol?: number; maxIter?: number; } +export interface BiochemistrySciWaveletResult { values: number[]; converged: boolean; } +export function computeBiochemistrySciWavelet(data: number[], opts: BiochemistrySciWaveletOptions = {}): BiochemistrySciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiochemistrySciWavelet }; diff --git a/src/biomechanics/adaptation.ts b/src/biomechanics/adaptation.ts new file mode 100644 index 000000000..79670f435 --- /dev/null +++ b/src/biomechanics/adaptation.ts @@ -0,0 +1,14 @@ +/** biomechanics adaptation module — tsb analytics library. */ +export interface BiomechanicsAdaptationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsAdaptationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsAdaptation(data: number[], opts: BiomechanicsAdaptationOptions = {}): BiomechanicsAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsAdaptation }; diff --git a/src/biomechanics/aggregation.ts b/src/biomechanics/aggregation.ts new file mode 100644 index 000000000..3e028e29a --- /dev/null +++ b/src/biomechanics/aggregation.ts @@ -0,0 +1,14 @@ +/** biomechanics aggregation module — tsb analytics library. */ +export interface BiomechanicsAggregationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsAggregationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsAggregation(data: number[], opts: BiomechanicsAggregationOptions = {}): BiomechanicsAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsAggregation }; diff --git a/src/biomechanics/algebra.ts b/src/biomechanics/algebra.ts new file mode 100644 index 000000000..8a53c6957 --- /dev/null +++ b/src/biomechanics/algebra.ts @@ -0,0 +1,14 @@ +/** biomechanics algebra module — tsb analytics library. */ +export interface BiomechanicsAlgebraOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsAlgebraResult { values: number[]; converged: boolean; } +export function computeBiomechanicsAlgebra(data: number[], opts: BiomechanicsAlgebraOptions = {}): BiomechanicsAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsAlgebra }; diff --git a/src/biomechanics/alignment.ts b/src/biomechanics/alignment.ts new file mode 100644 index 000000000..b66b5d926 --- /dev/null +++ b/src/biomechanics/alignment.ts @@ -0,0 +1,14 @@ +/** biomechanics alignment module — tsb analytics library. */ +export interface BiomechanicsAlignmentOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsAlignmentResult { values: number[]; converged: boolean; } +export function computeBiomechanicsAlignment(data: number[], opts: BiomechanicsAlignmentOptions = {}): BiomechanicsAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsAlignment }; diff --git a/src/biomechanics/analysis.ts b/src/biomechanics/analysis.ts new file mode 100644 index 000000000..ae9fbab0d --- /dev/null +++ b/src/biomechanics/analysis.ts @@ -0,0 +1,14 @@ +/** biomechanics analysis module — tsb analytics library. */ +export interface BiomechanicsAnalysisOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsAnalysisResult { values: number[]; converged: boolean; } +export function computeBiomechanicsAnalysis(data: number[], opts: BiomechanicsAnalysisOptions = {}): BiomechanicsAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsAnalysis }; diff --git a/src/biomechanics/augmentation.ts b/src/biomechanics/augmentation.ts new file mode 100644 index 000000000..686a9855b --- /dev/null +++ b/src/biomechanics/augmentation.ts @@ -0,0 +1,14 @@ +/** biomechanics augmentation module — tsb analytics library. */ +export interface BiomechanicsAugmentationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsAugmentationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsAugmentation(data: number[], opts: BiomechanicsAugmentationOptions = {}): BiomechanicsAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsAugmentation }; diff --git a/src/biomechanics/bagging.ts b/src/biomechanics/bagging.ts new file mode 100644 index 000000000..6d15fd202 --- /dev/null +++ b/src/biomechanics/bagging.ts @@ -0,0 +1,14 @@ +/** biomechanics bagging module — tsb analytics library. */ +export interface BiomechanicsBaggingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsBaggingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsBagging(data: number[], opts: BiomechanicsBaggingOptions = {}): BiomechanicsBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsBagging }; diff --git a/src/biomechanics/basis.ts b/src/biomechanics/basis.ts new file mode 100644 index 000000000..5e126d8f4 --- /dev/null +++ b/src/biomechanics/basis.ts @@ -0,0 +1,14 @@ +/** biomechanics basis module — tsb analytics library. */ +export interface BiomechanicsBasisOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsBasisResult { values: number[]; converged: boolean; } +export function computeBiomechanicsBasis(data: number[], opts: BiomechanicsBasisOptions = {}): BiomechanicsBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsBasis }; diff --git a/src/biomechanics/benchmarking.ts b/src/biomechanics/benchmarking.ts new file mode 100644 index 000000000..2443a2c09 --- /dev/null +++ b/src/biomechanics/benchmarking.ts @@ -0,0 +1,14 @@ +/** biomechanics benchmarking module — tsb analytics library. */ +export interface BiomechanicsBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsBenchmarkingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsBenchmarking(data: number[], opts: BiomechanicsBenchmarkingOptions = {}): BiomechanicsBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsBenchmarking }; diff --git a/src/biomechanics/blending.ts b/src/biomechanics/blending.ts new file mode 100644 index 000000000..3edbf7712 --- /dev/null +++ b/src/biomechanics/blending.ts @@ -0,0 +1,14 @@ +/** biomechanics blending module — tsb analytics library. */ +export interface BiomechanicsBlendingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsBlendingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsBlending(data: number[], opts: BiomechanicsBlendingOptions = {}): BiomechanicsBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsBlending }; diff --git a/src/biomechanics/boosting.ts b/src/biomechanics/boosting.ts new file mode 100644 index 000000000..796179261 --- /dev/null +++ b/src/biomechanics/boosting.ts @@ -0,0 +1,14 @@ +/** biomechanics boosting module — tsb analytics library. */ +export interface BiomechanicsBoostingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsBoostingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsBoosting(data: number[], opts: BiomechanicsBoostingOptions = {}): BiomechanicsBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsBoosting }; diff --git a/src/biomechanics/bootstrap.ts b/src/biomechanics/bootstrap.ts new file mode 100644 index 000000000..1d22ee6b7 --- /dev/null +++ b/src/biomechanics/bootstrap.ts @@ -0,0 +1,14 @@ +/** biomechanics bootstrap module — tsb analytics library. */ +export interface BiomechanicsBootstrapOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsBootstrapResult { values: number[]; converged: boolean; } +export function computeBiomechanicsBootstrap(data: number[], opts: BiomechanicsBootstrapOptions = {}): BiomechanicsBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsBootstrap }; diff --git a/src/biomechanics/calculus.ts b/src/biomechanics/calculus.ts new file mode 100644 index 000000000..96c0a04fd --- /dev/null +++ b/src/biomechanics/calculus.ts @@ -0,0 +1,14 @@ +/** biomechanics calculus module — tsb analytics library. */ +export interface BiomechanicsCalculusOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCalculusResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCalculus(data: number[], opts: BiomechanicsCalculusOptions = {}): BiomechanicsCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCalculus }; diff --git a/src/biomechanics/calibration.ts b/src/biomechanics/calibration.ts new file mode 100644 index 000000000..988090749 --- /dev/null +++ b/src/biomechanics/calibration.ts @@ -0,0 +1,14 @@ +/** biomechanics calibration module — tsb analytics library. */ +export interface BiomechanicsCalibrationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCalibrationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCalibration(data: number[], opts: BiomechanicsCalibrationOptions = {}): BiomechanicsCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCalibration }; diff --git a/src/biomechanics/characterization.ts b/src/biomechanics/characterization.ts new file mode 100644 index 000000000..f245c5999 --- /dev/null +++ b/src/biomechanics/characterization.ts @@ -0,0 +1,14 @@ +/** biomechanics characterization module — tsb analytics library. */ +export interface BiomechanicsCharacterizationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCharacterizationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCharacterization(data: number[], opts: BiomechanicsCharacterizationOptions = {}): BiomechanicsCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCharacterization }; diff --git a/src/biomechanics/classification.ts b/src/biomechanics/classification.ts new file mode 100644 index 000000000..59de2fd02 --- /dev/null +++ b/src/biomechanics/classification.ts @@ -0,0 +1,14 @@ +/** biomechanics classification module — tsb analytics library. */ +export interface BiomechanicsClassificationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsClassificationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsClassification(data: number[], opts: BiomechanicsClassificationOptions = {}): BiomechanicsClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsClassification }; diff --git a/src/biomechanics/clustering.ts b/src/biomechanics/clustering.ts new file mode 100644 index 000000000..fd0a2936b --- /dev/null +++ b/src/biomechanics/clustering.ts @@ -0,0 +1,14 @@ +/** biomechanics clustering module — tsb analytics library. */ +export interface BiomechanicsClusteringOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsClusteringResult { values: number[]; converged: boolean; } +export function computeBiomechanicsClustering(data: number[], opts: BiomechanicsClusteringOptions = {}): BiomechanicsClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsClustering }; diff --git a/src/biomechanics/compression.ts b/src/biomechanics/compression.ts new file mode 100644 index 000000000..4e8870211 --- /dev/null +++ b/src/biomechanics/compression.ts @@ -0,0 +1,14 @@ +/** biomechanics compression module — tsb analytics library. */ +export interface BiomechanicsCompressionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCompressionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCompression(data: number[], opts: BiomechanicsCompressionOptions = {}): BiomechanicsCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCompression }; diff --git a/src/biomechanics/continuous.ts b/src/biomechanics/continuous.ts new file mode 100644 index 000000000..3f853637e --- /dev/null +++ b/src/biomechanics/continuous.ts @@ -0,0 +1,14 @@ +/** biomechanics continuous module — tsb analytics library. */ +export interface BiomechanicsContinuousOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsContinuousResult { values: number[]; converged: boolean; } +export function computeBiomechanicsContinuous(data: number[], opts: BiomechanicsContinuousOptions = {}): BiomechanicsContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsContinuous }; diff --git a/src/biomechanics/control.ts b/src/biomechanics/control.ts new file mode 100644 index 000000000..455991463 --- /dev/null +++ b/src/biomechanics/control.ts @@ -0,0 +1,14 @@ +/** biomechanics control module — tsb analytics library. */ +export interface BiomechanicsControlOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsControlResult { values: number[]; converged: boolean; } +export function computeBiomechanicsControl(data: number[], opts: BiomechanicsControlOptions = {}): BiomechanicsControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsControl }; diff --git a/src/biomechanics/convergence.ts b/src/biomechanics/convergence.ts new file mode 100644 index 000000000..b2b1b3e5b --- /dev/null +++ b/src/biomechanics/convergence.ts @@ -0,0 +1,14 @@ +/** biomechanics convergence module — tsb analytics library. */ +export interface BiomechanicsConvergenceOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsConvergenceResult { values: number[]; converged: boolean; } +export function computeBiomechanicsConvergence(data: number[], opts: BiomechanicsConvergenceOptions = {}): BiomechanicsConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsConvergence }; diff --git a/src/biomechanics/convex.ts b/src/biomechanics/convex.ts new file mode 100644 index 000000000..fee047c14 --- /dev/null +++ b/src/biomechanics/convex.ts @@ -0,0 +1,14 @@ +/** biomechanics convex module — tsb analytics library. */ +export interface BiomechanicsConvexOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsConvexResult { values: number[]; converged: boolean; } +export function computeBiomechanicsConvex(data: number[], opts: BiomechanicsConvexOptions = {}): BiomechanicsConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsConvex }; diff --git a/src/biomechanics/correlation.ts b/src/biomechanics/correlation.ts new file mode 100644 index 000000000..380a12264 --- /dev/null +++ b/src/biomechanics/correlation.ts @@ -0,0 +1,14 @@ +/** biomechanics correlation module — tsb analytics library. */ +export interface BiomechanicsCorrelationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCorrelationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCorrelation(data: number[], opts: BiomechanicsCorrelationOptions = {}): BiomechanicsCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCorrelation }; diff --git a/src/biomechanics/covariance.ts b/src/biomechanics/covariance.ts new file mode 100644 index 000000000..ac9ce5f14 --- /dev/null +++ b/src/biomechanics/covariance.ts @@ -0,0 +1,14 @@ +/** biomechanics covariance module — tsb analytics library. */ +export interface BiomechanicsCovarianceOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCovarianceResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCovariance(data: number[], opts: BiomechanicsCovarianceOptions = {}): BiomechanicsCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCovariance }; diff --git a/src/biomechanics/cross_validation.ts b/src/biomechanics/cross_validation.ts new file mode 100644 index 000000000..336018177 --- /dev/null +++ b/src/biomechanics/cross_validation.ts @@ -0,0 +1,14 @@ +/** biomechanics cross_validation module — tsb analytics library. */ +export interface BiomechanicsCrossValidationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsCrossValidationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsCrossValidation(data: number[], opts: BiomechanicsCrossValidationOptions = {}): BiomechanicsCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsCrossValidation }; diff --git a/src/biomechanics/decoding.ts b/src/biomechanics/decoding.ts new file mode 100644 index 000000000..3ad972cf7 --- /dev/null +++ b/src/biomechanics/decoding.ts @@ -0,0 +1,14 @@ +/** biomechanics decoding module — tsb analytics library. */ +export interface BiomechanicsDecodingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDecodingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDecoding(data: number[], opts: BiomechanicsDecodingOptions = {}): BiomechanicsDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDecoding }; diff --git a/src/biomechanics/decomposition.ts b/src/biomechanics/decomposition.ts new file mode 100644 index 000000000..fe25c3a4f --- /dev/null +++ b/src/biomechanics/decomposition.ts @@ -0,0 +1,14 @@ +/** biomechanics decomposition module — tsb analytics library. */ +export interface BiomechanicsDecompositionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDecompositionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDecomposition(data: number[], opts: BiomechanicsDecompositionOptions = {}): BiomechanicsDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDecomposition }; diff --git a/src/biomechanics/detection.ts b/src/biomechanics/detection.ts new file mode 100644 index 000000000..7117f8094 --- /dev/null +++ b/src/biomechanics/detection.ts @@ -0,0 +1,14 @@ +/** biomechanics detection module — tsb analytics library. */ +export interface BiomechanicsDetectionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDetectionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDetection(data: number[], opts: BiomechanicsDetectionOptions = {}): BiomechanicsDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDetection }; diff --git a/src/biomechanics/deterministic.ts b/src/biomechanics/deterministic.ts new file mode 100644 index 000000000..c2336fd87 --- /dev/null +++ b/src/biomechanics/deterministic.ts @@ -0,0 +1,14 @@ +/** biomechanics deterministic module — tsb analytics library. */ +export interface BiomechanicsDeterministicOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDeterministicResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDeterministic(data: number[], opts: BiomechanicsDeterministicOptions = {}): BiomechanicsDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDeterministic }; diff --git a/src/biomechanics/diagnostics.ts b/src/biomechanics/diagnostics.ts new file mode 100644 index 000000000..3b4e3f39d --- /dev/null +++ b/src/biomechanics/diagnostics.ts @@ -0,0 +1,14 @@ +/** biomechanics diagnostics module — tsb analytics library. */ +export interface BiomechanicsDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDiagnosticsResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDiagnostics(data: number[], opts: BiomechanicsDiagnosticsOptions = {}): BiomechanicsDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDiagnostics }; diff --git a/src/biomechanics/differential.ts b/src/biomechanics/differential.ts new file mode 100644 index 000000000..130916c04 --- /dev/null +++ b/src/biomechanics/differential.ts @@ -0,0 +1,14 @@ +/** biomechanics differential module — tsb analytics library. */ +export interface BiomechanicsDifferentialOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDifferentialResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDifferential(data: number[], opts: BiomechanicsDifferentialOptions = {}): BiomechanicsDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDifferential }; diff --git a/src/biomechanics/discrete.ts b/src/biomechanics/discrete.ts new file mode 100644 index 000000000..955c6ee77 --- /dev/null +++ b/src/biomechanics/discrete.ts @@ -0,0 +1,14 @@ +/** biomechanics discrete module — tsb analytics library. */ +export interface BiomechanicsDiscreteOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDiscreteResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDiscrete(data: number[], opts: BiomechanicsDiscreteOptions = {}): BiomechanicsDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDiscrete }; diff --git a/src/biomechanics/distribution.ts b/src/biomechanics/distribution.ts new file mode 100644 index 000000000..ce3374fd2 --- /dev/null +++ b/src/biomechanics/distribution.ts @@ -0,0 +1,14 @@ +/** biomechanics distribution module — tsb analytics library. */ +export interface BiomechanicsDistributionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDistributionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDistribution(data: number[], opts: BiomechanicsDistributionOptions = {}): BiomechanicsDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDistribution }; diff --git a/src/biomechanics/dynamic.ts b/src/biomechanics/dynamic.ts new file mode 100644 index 000000000..c9e9bd89b --- /dev/null +++ b/src/biomechanics/dynamic.ts @@ -0,0 +1,14 @@ +/** biomechanics dynamic module — tsb analytics library. */ +export interface BiomechanicsDynamicOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsDynamicResult { values: number[]; converged: boolean; } +export function computeBiomechanicsDynamic(data: number[], opts: BiomechanicsDynamicOptions = {}): BiomechanicsDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsDynamic }; diff --git a/src/biomechanics/embedding.ts b/src/biomechanics/embedding.ts new file mode 100644 index 000000000..4477ee876 --- /dev/null +++ b/src/biomechanics/embedding.ts @@ -0,0 +1,14 @@ +/** biomechanics embedding module — tsb analytics library. */ +export interface BiomechanicsEmbeddingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsEmbeddingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsEmbedding(data: number[], opts: BiomechanicsEmbeddingOptions = {}): BiomechanicsEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsEmbedding }; diff --git a/src/biomechanics/encoding.ts b/src/biomechanics/encoding.ts new file mode 100644 index 000000000..17004a260 --- /dev/null +++ b/src/biomechanics/encoding.ts @@ -0,0 +1,14 @@ +/** biomechanics encoding module — tsb analytics library. */ +export interface BiomechanicsEncodingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsEncodingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsEncoding(data: number[], opts: BiomechanicsEncodingOptions = {}): BiomechanicsEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsEncoding }; diff --git a/src/biomechanics/ensemble.ts b/src/biomechanics/ensemble.ts new file mode 100644 index 000000000..38db116d0 --- /dev/null +++ b/src/biomechanics/ensemble.ts @@ -0,0 +1,14 @@ +/** biomechanics ensemble module — tsb analytics library. */ +export interface BiomechanicsEnsembleOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsEnsembleResult { values: number[]; converged: boolean; } +export function computeBiomechanicsEnsemble(data: number[], opts: BiomechanicsEnsembleOptions = {}): BiomechanicsEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsEnsemble }; diff --git a/src/biomechanics/estimation.ts b/src/biomechanics/estimation.ts new file mode 100644 index 000000000..e7343a9e2 --- /dev/null +++ b/src/biomechanics/estimation.ts @@ -0,0 +1,14 @@ +/** biomechanics estimation module — tsb analytics library. */ +export interface BiomechanicsEstimationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsEstimationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsEstimation(data: number[], opts: BiomechanicsEstimationOptions = {}): BiomechanicsEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsEstimation }; diff --git a/src/biomechanics/evaluation.ts b/src/biomechanics/evaluation.ts new file mode 100644 index 000000000..7938e4a7f --- /dev/null +++ b/src/biomechanics/evaluation.ts @@ -0,0 +1,14 @@ +/** biomechanics evaluation module — tsb analytics library. */ +export interface BiomechanicsEvaluationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsEvaluationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsEvaluation(data: number[], opts: BiomechanicsEvaluationOptions = {}): BiomechanicsEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsEvaluation }; diff --git a/src/biomechanics/extrapolation.ts b/src/biomechanics/extrapolation.ts new file mode 100644 index 000000000..5d3055319 --- /dev/null +++ b/src/biomechanics/extrapolation.ts @@ -0,0 +1,14 @@ +/** biomechanics extrapolation module — tsb analytics library. */ +export interface BiomechanicsExtrapolationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsExtrapolationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsExtrapolation(data: number[], opts: BiomechanicsExtrapolationOptions = {}): BiomechanicsExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsExtrapolation }; diff --git a/src/biomechanics/features.ts b/src/biomechanics/features.ts new file mode 100644 index 000000000..5a94363d9 --- /dev/null +++ b/src/biomechanics/features.ts @@ -0,0 +1,14 @@ +/** biomechanics features module — tsb analytics library. */ +export interface BiomechanicsFeaturesOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsFeaturesResult { values: number[]; converged: boolean; } +export function computeBiomechanicsFeatures(data: number[], opts: BiomechanicsFeaturesOptions = {}): BiomechanicsFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsFeatures }; diff --git a/src/biomechanics/feedback.ts b/src/biomechanics/feedback.ts new file mode 100644 index 000000000..a0a4deb7d --- /dev/null +++ b/src/biomechanics/feedback.ts @@ -0,0 +1,14 @@ +/** biomechanics feedback module — tsb analytics library. */ +export interface BiomechanicsFeedbackOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsFeedbackResult { values: number[]; converged: boolean; } +export function computeBiomechanicsFeedback(data: number[], opts: BiomechanicsFeedbackOptions = {}): BiomechanicsFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsFeedback }; diff --git a/src/biomechanics/filtering.ts b/src/biomechanics/filtering.ts new file mode 100644 index 000000000..a93fea407 --- /dev/null +++ b/src/biomechanics/filtering.ts @@ -0,0 +1,14 @@ +/** biomechanics filtering module — tsb analytics library. */ +export interface BiomechanicsFilteringOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsFilteringResult { values: number[]; converged: boolean; } +export function computeBiomechanicsFiltering(data: number[], opts: BiomechanicsFilteringOptions = {}): BiomechanicsFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsFiltering }; diff --git a/src/biomechanics/fourier.ts b/src/biomechanics/fourier.ts new file mode 100644 index 000000000..332daf618 --- /dev/null +++ b/src/biomechanics/fourier.ts @@ -0,0 +1,14 @@ +/** biomechanics fourier module — tsb analytics library. */ +export interface BiomechanicsFourierOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsFourierResult { values: number[]; converged: boolean; } +export function computeBiomechanicsFourier(data: number[], opts: BiomechanicsFourierOptions = {}): BiomechanicsFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsFourier }; diff --git a/src/biomechanics/fusion.ts b/src/biomechanics/fusion.ts new file mode 100644 index 000000000..367e9b0dc --- /dev/null +++ b/src/biomechanics/fusion.ts @@ -0,0 +1,14 @@ +/** biomechanics fusion module — tsb analytics library. */ +export interface BiomechanicsFusionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsFusionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsFusion(data: number[], opts: BiomechanicsFusionOptions = {}): BiomechanicsFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsFusion }; diff --git a/src/biomechanics/generation.ts b/src/biomechanics/generation.ts new file mode 100644 index 000000000..e7c141457 --- /dev/null +++ b/src/biomechanics/generation.ts @@ -0,0 +1,14 @@ +/** biomechanics generation module — tsb analytics library. */ +export interface BiomechanicsGenerationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsGenerationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsGeneration(data: number[], opts: BiomechanicsGenerationOptions = {}): BiomechanicsGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsGeneration }; diff --git a/src/biomechanics/geometry.ts b/src/biomechanics/geometry.ts new file mode 100644 index 000000000..232e0b0cd --- /dev/null +++ b/src/biomechanics/geometry.ts @@ -0,0 +1,14 @@ +/** biomechanics geometry module — tsb analytics library. */ +export interface BiomechanicsGeometryOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsGeometryResult { values: number[]; converged: boolean; } +export function computeBiomechanicsGeometry(data: number[], opts: BiomechanicsGeometryOptions = {}): BiomechanicsGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsGeometry }; diff --git a/src/biomechanics/gradient.ts b/src/biomechanics/gradient.ts new file mode 100644 index 000000000..79c16d72e --- /dev/null +++ b/src/biomechanics/gradient.ts @@ -0,0 +1,14 @@ +/** biomechanics gradient module — tsb analytics library. */ +export interface BiomechanicsGradientOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsGradientResult { values: number[]; converged: boolean; } +export function computeBiomechanicsGradient(data: number[], opts: BiomechanicsGradientOptions = {}): BiomechanicsGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsGradient }; diff --git a/src/biomechanics/hessian.ts b/src/biomechanics/hessian.ts new file mode 100644 index 000000000..7337bf16f --- /dev/null +++ b/src/biomechanics/hessian.ts @@ -0,0 +1,14 @@ +/** biomechanics hessian module — tsb analytics library. */ +export interface BiomechanicsHessianOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsHessianResult { values: number[]; converged: boolean; } +export function computeBiomechanicsHessian(data: number[], opts: BiomechanicsHessianOptions = {}): BiomechanicsHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsHessian }; diff --git a/src/biomechanics/hypothesis.ts b/src/biomechanics/hypothesis.ts new file mode 100644 index 000000000..65e8331b2 --- /dev/null +++ b/src/biomechanics/hypothesis.ts @@ -0,0 +1,14 @@ +/** biomechanics hypothesis module — tsb analytics library. */ +export interface BiomechanicsHypothesisOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsHypothesisResult { values: number[]; converged: boolean; } +export function computeBiomechanicsHypothesis(data: number[], opts: BiomechanicsHypothesisOptions = {}): BiomechanicsHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsHypothesis }; diff --git a/src/biomechanics/inference.ts b/src/biomechanics/inference.ts new file mode 100644 index 000000000..74b92ba41 --- /dev/null +++ b/src/biomechanics/inference.ts @@ -0,0 +1,14 @@ +/** biomechanics inference module — tsb analytics library. */ +export interface BiomechanicsInferenceOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsInferenceResult { values: number[]; converged: boolean; } +export function computeBiomechanicsInference(data: number[], opts: BiomechanicsInferenceOptions = {}): BiomechanicsInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsInference }; diff --git a/src/biomechanics/inference2.ts b/src/biomechanics/inference2.ts new file mode 100644 index 000000000..9b356bdbb --- /dev/null +++ b/src/biomechanics/inference2.ts @@ -0,0 +1,14 @@ +/** biomechanics inference2 module — tsb analytics library. */ +export interface BiomechanicsInferenceOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsInferenceResult { values: number[]; converged: boolean; } +export function computeBiomechanicsInference(data: number[], opts: BiomechanicsInferenceOptions = {}): BiomechanicsInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsInference }; diff --git a/src/biomechanics/integral.ts b/src/biomechanics/integral.ts new file mode 100644 index 000000000..184d24894 --- /dev/null +++ b/src/biomechanics/integral.ts @@ -0,0 +1,14 @@ +/** biomechanics integral module — tsb analytics library. */ +export interface BiomechanicsIntegralOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsIntegralResult { values: number[]; converged: boolean; } +export function computeBiomechanicsIntegral(data: number[], opts: BiomechanicsIntegralOptions = {}): BiomechanicsIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsIntegral }; diff --git a/src/biomechanics/integration.ts b/src/biomechanics/integration.ts new file mode 100644 index 000000000..175a51228 --- /dev/null +++ b/src/biomechanics/integration.ts @@ -0,0 +1,14 @@ +/** biomechanics integration module — tsb analytics library. */ +export interface BiomechanicsIntegrationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsIntegrationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsIntegration(data: number[], opts: BiomechanicsIntegrationOptions = {}): BiomechanicsIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsIntegration }; diff --git a/src/biomechanics/interpolation.ts b/src/biomechanics/interpolation.ts new file mode 100644 index 000000000..2045ea666 --- /dev/null +++ b/src/biomechanics/interpolation.ts @@ -0,0 +1,14 @@ +/** biomechanics interpolation module — tsb analytics library. */ +export interface BiomechanicsInterpolationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsInterpolationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsInterpolation(data: number[], opts: BiomechanicsInterpolationOptions = {}): BiomechanicsInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsInterpolation }; diff --git a/src/biomechanics/jacobian.ts b/src/biomechanics/jacobian.ts new file mode 100644 index 000000000..2cf2acc30 --- /dev/null +++ b/src/biomechanics/jacobian.ts @@ -0,0 +1,14 @@ +/** biomechanics jacobian module — tsb analytics library. */ +export interface BiomechanicsJacobianOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsJacobianResult { values: number[]; converged: boolean; } +export function computeBiomechanicsJacobian(data: number[], opts: BiomechanicsJacobianOptions = {}): BiomechanicsJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsJacobian }; diff --git a/src/biomechanics/kernel.ts b/src/biomechanics/kernel.ts new file mode 100644 index 000000000..1987e5330 --- /dev/null +++ b/src/biomechanics/kernel.ts @@ -0,0 +1,14 @@ +/** biomechanics kernel module — tsb analytics library. */ +export interface BiomechanicsKernelOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsKernelResult { values: number[]; converged: boolean; } +export function computeBiomechanicsKernel(data: number[], opts: BiomechanicsKernelOptions = {}): BiomechanicsKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsKernel }; diff --git a/src/biomechanics/laplacian.ts b/src/biomechanics/laplacian.ts new file mode 100644 index 000000000..cdd89c426 --- /dev/null +++ b/src/biomechanics/laplacian.ts @@ -0,0 +1,14 @@ +/** biomechanics laplacian module — tsb analytics library. */ +export interface BiomechanicsLaplacianOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsLaplacianResult { values: number[]; converged: boolean; } +export function computeBiomechanicsLaplacian(data: number[], opts: BiomechanicsLaplacianOptions = {}): BiomechanicsLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsLaplacian }; diff --git a/src/biomechanics/learning.ts b/src/biomechanics/learning.ts new file mode 100644 index 000000000..29f07a488 --- /dev/null +++ b/src/biomechanics/learning.ts @@ -0,0 +1,14 @@ +/** biomechanics learning module — tsb analytics library. */ +export interface BiomechanicsLearningOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsLearningResult { values: number[]; converged: boolean; } +export function computeBiomechanicsLearning(data: number[], opts: BiomechanicsLearningOptions = {}): BiomechanicsLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsLearning }; diff --git a/src/biomechanics/linear.ts b/src/biomechanics/linear.ts new file mode 100644 index 000000000..005896906 --- /dev/null +++ b/src/biomechanics/linear.ts @@ -0,0 +1,14 @@ +/** biomechanics linear module — tsb analytics library. */ +export interface BiomechanicsLinearOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsLinearResult { values: number[]; converged: boolean; } +export function computeBiomechanicsLinear(data: number[], opts: BiomechanicsLinearOptions = {}): BiomechanicsLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsLinear }; diff --git a/src/biomechanics/manifold.ts b/src/biomechanics/manifold.ts new file mode 100644 index 000000000..641117741 --- /dev/null +++ b/src/biomechanics/manifold.ts @@ -0,0 +1,14 @@ +/** biomechanics manifold module — tsb analytics library. */ +export interface BiomechanicsManifoldOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsManifoldResult { values: number[]; converged: boolean; } +export function computeBiomechanicsManifold(data: number[], opts: BiomechanicsManifoldOptions = {}): BiomechanicsManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsManifold }; diff --git a/src/biomechanics/matching.ts b/src/biomechanics/matching.ts new file mode 100644 index 000000000..4dcd023d4 --- /dev/null +++ b/src/biomechanics/matching.ts @@ -0,0 +1,14 @@ +/** biomechanics matching module — tsb analytics library. */ +export interface BiomechanicsMatchingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsMatchingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsMatching(data: number[], opts: BiomechanicsMatchingOptions = {}): BiomechanicsMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsMatching }; diff --git a/src/biomechanics/measurement.ts b/src/biomechanics/measurement.ts new file mode 100644 index 000000000..1a83b85e4 --- /dev/null +++ b/src/biomechanics/measurement.ts @@ -0,0 +1,14 @@ +/** biomechanics measurement module — tsb analytics library. */ +export interface BiomechanicsMeasurementOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsMeasurementResult { values: number[]; converged: boolean; } +export function computeBiomechanicsMeasurement(data: number[], opts: BiomechanicsMeasurementOptions = {}): BiomechanicsMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsMeasurement }; diff --git a/src/biomechanics/metrics.ts b/src/biomechanics/metrics.ts new file mode 100644 index 000000000..14100a2b8 --- /dev/null +++ b/src/biomechanics/metrics.ts @@ -0,0 +1,14 @@ +/** biomechanics metrics module — tsb analytics library. */ +export interface BiomechanicsMetricsOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsMetricsResult { values: number[]; converged: boolean; } +export function computeBiomechanicsMetrics(data: number[], opts: BiomechanicsMetricsOptions = {}): BiomechanicsMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsMetrics }; diff --git a/src/biomechanics/modeling.ts b/src/biomechanics/modeling.ts new file mode 100644 index 000000000..6d12e2b87 --- /dev/null +++ b/src/biomechanics/modeling.ts @@ -0,0 +1,14 @@ +/** biomechanics modeling module — tsb analytics library. */ +export interface BiomechanicsModelingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsModelingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsModeling(data: number[], opts: BiomechanicsModelingOptions = {}): BiomechanicsModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsModeling }; diff --git a/src/biomechanics/monitoring.ts b/src/biomechanics/monitoring.ts new file mode 100644 index 000000000..c1a555427 --- /dev/null +++ b/src/biomechanics/monitoring.ts @@ -0,0 +1,14 @@ +/** biomechanics monitoring module — tsb analytics library. */ +export interface BiomechanicsMonitoringOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsMonitoringResult { values: number[]; converged: boolean; } +export function computeBiomechanicsMonitoring(data: number[], opts: BiomechanicsMonitoringOptions = {}): BiomechanicsMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsMonitoring }; diff --git a/src/biomechanics/nonlinear.ts b/src/biomechanics/nonlinear.ts new file mode 100644 index 000000000..743b99467 --- /dev/null +++ b/src/biomechanics/nonlinear.ts @@ -0,0 +1,14 @@ +/** biomechanics nonlinear module — tsb analytics library. */ +export interface BiomechanicsNonlinearOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsNonlinearResult { values: number[]; converged: boolean; } +export function computeBiomechanicsNonlinear(data: number[], opts: BiomechanicsNonlinearOptions = {}): BiomechanicsNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsNonlinear }; diff --git a/src/biomechanics/normalization.ts b/src/biomechanics/normalization.ts new file mode 100644 index 000000000..0a550f71f --- /dev/null +++ b/src/biomechanics/normalization.ts @@ -0,0 +1,14 @@ +/** biomechanics normalization module — tsb analytics library. */ +export interface BiomechanicsNormalizationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsNormalizationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsNormalization(data: number[], opts: BiomechanicsNormalizationOptions = {}): BiomechanicsNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsNormalization }; diff --git a/src/biomechanics/optimization.ts b/src/biomechanics/optimization.ts new file mode 100644 index 000000000..c2e85c726 --- /dev/null +++ b/src/biomechanics/optimization.ts @@ -0,0 +1,14 @@ +/** biomechanics optimization module — tsb analytics library. */ +export interface BiomechanicsOptimizationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsOptimizationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsOptimization(data: number[], opts: BiomechanicsOptimizationOptions = {}): BiomechanicsOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsOptimization }; diff --git a/src/biomechanics/patterns.ts b/src/biomechanics/patterns.ts new file mode 100644 index 000000000..4686d8fe8 --- /dev/null +++ b/src/biomechanics/patterns.ts @@ -0,0 +1,14 @@ +/** biomechanics patterns module — tsb analytics library. */ +export interface BiomechanicsPatternsOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsPatternsResult { values: number[]; converged: boolean; } +export function computeBiomechanicsPatterns(data: number[], opts: BiomechanicsPatternsOptions = {}): BiomechanicsPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsPatterns }; diff --git a/src/biomechanics/permutation.ts b/src/biomechanics/permutation.ts new file mode 100644 index 000000000..3d5c7d1b5 --- /dev/null +++ b/src/biomechanics/permutation.ts @@ -0,0 +1,14 @@ +/** biomechanics permutation module — tsb analytics library. */ +export interface BiomechanicsPermutationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsPermutationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsPermutation(data: number[], opts: BiomechanicsPermutationOptions = {}): BiomechanicsPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsPermutation }; diff --git a/src/biomechanics/prediction.ts b/src/biomechanics/prediction.ts new file mode 100644 index 000000000..cce20da9c --- /dev/null +++ b/src/biomechanics/prediction.ts @@ -0,0 +1,14 @@ +/** biomechanics prediction module — tsb analytics library. */ +export interface BiomechanicsPredictionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsPredictionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsPrediction(data: number[], opts: BiomechanicsPredictionOptions = {}): BiomechanicsPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsPrediction }; diff --git a/src/biomechanics/processing.ts b/src/biomechanics/processing.ts new file mode 100644 index 000000000..4dc6afd77 --- /dev/null +++ b/src/biomechanics/processing.ts @@ -0,0 +1,14 @@ +/** biomechanics processing module — tsb analytics library. */ +export interface BiomechanicsProcessingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsProcessingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsProcessing(data: number[], opts: BiomechanicsProcessingOptions = {}): BiomechanicsProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsProcessing }; diff --git a/src/biomechanics/profiling.ts b/src/biomechanics/profiling.ts new file mode 100644 index 000000000..1cecd6130 --- /dev/null +++ b/src/biomechanics/profiling.ts @@ -0,0 +1,14 @@ +/** biomechanics profiling module — tsb analytics library. */ +export interface BiomechanicsProfilingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsProfilingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsProfiling(data: number[], opts: BiomechanicsProfilingOptions = {}): BiomechanicsProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsProfiling }; diff --git a/src/biomechanics/projection.ts b/src/biomechanics/projection.ts new file mode 100644 index 000000000..e078ed5c3 --- /dev/null +++ b/src/biomechanics/projection.ts @@ -0,0 +1,14 @@ +/** biomechanics projection module — tsb analytics library. */ +export interface BiomechanicsProjectionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsProjectionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsProjection(data: number[], opts: BiomechanicsProjectionOptions = {}): BiomechanicsProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsProjection }; diff --git a/src/biomechanics/ranking.ts b/src/biomechanics/ranking.ts new file mode 100644 index 000000000..5050788b2 --- /dev/null +++ b/src/biomechanics/ranking.ts @@ -0,0 +1,14 @@ +/** biomechanics ranking module — tsb analytics library. */ +export interface BiomechanicsRankingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsRankingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsRanking(data: number[], opts: BiomechanicsRankingOptions = {}): BiomechanicsRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsRanking }; diff --git a/src/biomechanics/reconstruction.ts b/src/biomechanics/reconstruction.ts new file mode 100644 index 000000000..b14920d94 --- /dev/null +++ b/src/biomechanics/reconstruction.ts @@ -0,0 +1,14 @@ +/** biomechanics reconstruction module — tsb analytics library. */ +export interface BiomechanicsReconstructionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsReconstructionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsReconstruction(data: number[], opts: BiomechanicsReconstructionOptions = {}): BiomechanicsReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsReconstruction }; diff --git a/src/biomechanics/registration.ts b/src/biomechanics/registration.ts new file mode 100644 index 000000000..98f35f7b2 --- /dev/null +++ b/src/biomechanics/registration.ts @@ -0,0 +1,14 @@ +/** biomechanics registration module — tsb analytics library. */ +export interface BiomechanicsRegistrationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsRegistrationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsRegistration(data: number[], opts: BiomechanicsRegistrationOptions = {}): BiomechanicsRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsRegistration }; diff --git a/src/biomechanics/regression.ts b/src/biomechanics/regression.ts new file mode 100644 index 000000000..90582484e --- /dev/null +++ b/src/biomechanics/regression.ts @@ -0,0 +1,14 @@ +/** biomechanics regression module — tsb analytics library. */ +export interface BiomechanicsRegressionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsRegressionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsRegression(data: number[], opts: BiomechanicsRegressionOptions = {}): BiomechanicsRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsRegression }; diff --git a/src/biomechanics/regularization.ts b/src/biomechanics/regularization.ts new file mode 100644 index 000000000..daeacc995 --- /dev/null +++ b/src/biomechanics/regularization.ts @@ -0,0 +1,14 @@ +/** biomechanics regularization module — tsb analytics library. */ +export interface BiomechanicsRegularizationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsRegularizationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsRegularization(data: number[], opts: BiomechanicsRegularizationOptions = {}): BiomechanicsRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsRegularization }; diff --git a/src/biomechanics/robustness.ts b/src/biomechanics/robustness.ts new file mode 100644 index 000000000..38b0bd72b --- /dev/null +++ b/src/biomechanics/robustness.ts @@ -0,0 +1,14 @@ +/** biomechanics robustness module — tsb analytics library. */ +export interface BiomechanicsRobustnessOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsRobustnessResult { values: number[]; converged: boolean; } +export function computeBiomechanicsRobustness(data: number[], opts: BiomechanicsRobustnessOptions = {}): BiomechanicsRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsRobustness }; diff --git a/src/biomechanics/sampling.ts b/src/biomechanics/sampling.ts new file mode 100644 index 000000000..de546601b --- /dev/null +++ b/src/biomechanics/sampling.ts @@ -0,0 +1,14 @@ +/** biomechanics sampling module — tsb analytics library. */ +export interface BiomechanicsSamplingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSamplingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSampling(data: number[], opts: BiomechanicsSamplingOptions = {}): BiomechanicsSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSampling }; diff --git a/src/biomechanics/sampling2.ts b/src/biomechanics/sampling2.ts new file mode 100644 index 000000000..92a90cd1e --- /dev/null +++ b/src/biomechanics/sampling2.ts @@ -0,0 +1,14 @@ +/** biomechanics sampling2 module — tsb analytics library. */ +export interface BiomechanicsSamplingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSamplingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSampling(data: number[], opts: BiomechanicsSamplingOptions = {}): BiomechanicsSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSampling }; diff --git a/src/biomechanics/scaling.ts b/src/biomechanics/scaling.ts new file mode 100644 index 000000000..cf607ddb9 --- /dev/null +++ b/src/biomechanics/scaling.ts @@ -0,0 +1,14 @@ +/** biomechanics scaling module — tsb analytics library. */ +export interface BiomechanicsScalingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsScalingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsScaling(data: number[], opts: BiomechanicsScalingOptions = {}): BiomechanicsScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsScaling }; diff --git a/src/biomechanics/scoring.ts b/src/biomechanics/scoring.ts new file mode 100644 index 000000000..59200d2cb --- /dev/null +++ b/src/biomechanics/scoring.ts @@ -0,0 +1,14 @@ +/** biomechanics scoring module — tsb analytics library. */ +export interface BiomechanicsScoringOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsScoringResult { values: number[]; converged: boolean; } +export function computeBiomechanicsScoring(data: number[], opts: BiomechanicsScoringOptions = {}): BiomechanicsScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsScoring }; diff --git a/src/biomechanics/segmentation.ts b/src/biomechanics/segmentation.ts new file mode 100644 index 000000000..78ef23712 --- /dev/null +++ b/src/biomechanics/segmentation.ts @@ -0,0 +1,14 @@ +/** biomechanics segmentation module — tsb analytics library. */ +export interface BiomechanicsSegmentationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSegmentationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSegmentation(data: number[], opts: BiomechanicsSegmentationOptions = {}): BiomechanicsSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSegmentation }; diff --git a/src/biomechanics/selection.ts b/src/biomechanics/selection.ts new file mode 100644 index 000000000..68ea8a25a --- /dev/null +++ b/src/biomechanics/selection.ts @@ -0,0 +1,14 @@ +/** biomechanics selection module — tsb analytics library. */ +export interface BiomechanicsSelectionOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSelectionResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSelection(data: number[], opts: BiomechanicsSelectionOptions = {}): BiomechanicsSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSelection }; diff --git a/src/biomechanics/sensitivity.ts b/src/biomechanics/sensitivity.ts new file mode 100644 index 000000000..260c295bf --- /dev/null +++ b/src/biomechanics/sensitivity.ts @@ -0,0 +1,14 @@ +/** biomechanics sensitivity module — tsb analytics library. */ +export interface BiomechanicsSensitivityOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSensitivityResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSensitivity(data: number[], opts: BiomechanicsSensitivityOptions = {}): BiomechanicsSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSensitivity }; diff --git a/src/biomechanics/simulation.ts b/src/biomechanics/simulation.ts new file mode 100644 index 000000000..29d027b7f --- /dev/null +++ b/src/biomechanics/simulation.ts @@ -0,0 +1,14 @@ +/** biomechanics simulation module — tsb analytics library. */ +export interface BiomechanicsSimulationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSimulationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSimulation(data: number[], opts: BiomechanicsSimulationOptions = {}): BiomechanicsSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSimulation }; diff --git a/src/biomechanics/smoothing.ts b/src/biomechanics/smoothing.ts new file mode 100644 index 000000000..e98eff8f7 --- /dev/null +++ b/src/biomechanics/smoothing.ts @@ -0,0 +1,14 @@ +/** biomechanics smoothing module — tsb analytics library. */ +export interface BiomechanicsSmoothingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSmoothingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSmoothing(data: number[], opts: BiomechanicsSmoothingOptions = {}): BiomechanicsSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSmoothing }; diff --git a/src/biomechanics/stability.ts b/src/biomechanics/stability.ts new file mode 100644 index 000000000..988ee205a --- /dev/null +++ b/src/biomechanics/stability.ts @@ -0,0 +1,14 @@ +/** biomechanics stability module — tsb analytics library. */ +export interface BiomechanicsStabilityOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsStabilityResult { values: number[]; converged: boolean; } +export function computeBiomechanicsStability(data: number[], opts: BiomechanicsStabilityOptions = {}): BiomechanicsStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsStability }; diff --git a/src/biomechanics/stacking.ts b/src/biomechanics/stacking.ts new file mode 100644 index 000000000..e1c7d7cb4 --- /dev/null +++ b/src/biomechanics/stacking.ts @@ -0,0 +1,14 @@ +/** biomechanics stacking module — tsb analytics library. */ +export interface BiomechanicsStackingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsStackingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsStacking(data: number[], opts: BiomechanicsStackingOptions = {}): BiomechanicsStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsStacking }; diff --git a/src/biomechanics/standardization.ts b/src/biomechanics/standardization.ts new file mode 100644 index 000000000..1e561d726 --- /dev/null +++ b/src/biomechanics/standardization.ts @@ -0,0 +1,14 @@ +/** biomechanics standardization module — tsb analytics library. */ +export interface BiomechanicsStandardizationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsStandardizationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsStandardization(data: number[], opts: BiomechanicsStandardizationOptions = {}): BiomechanicsStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsStandardization }; diff --git a/src/biomechanics/static.ts b/src/biomechanics/static.ts new file mode 100644 index 000000000..c8e4e44ed --- /dev/null +++ b/src/biomechanics/static.ts @@ -0,0 +1,14 @@ +/** biomechanics static module — tsb analytics library. */ +export interface BiomechanicsStaticOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsStaticResult { values: number[]; converged: boolean; } +export function computeBiomechanicsStatic(data: number[], opts: BiomechanicsStaticOptions = {}): BiomechanicsStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsStatic }; diff --git a/src/biomechanics/stochastic.ts b/src/biomechanics/stochastic.ts new file mode 100644 index 000000000..6549e0d7a --- /dev/null +++ b/src/biomechanics/stochastic.ts @@ -0,0 +1,14 @@ +/** biomechanics stochastic module — tsb analytics library. */ +export interface BiomechanicsStochasticOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsStochasticResult { values: number[]; converged: boolean; } +export function computeBiomechanicsStochastic(data: number[], opts: BiomechanicsStochasticOptions = {}): BiomechanicsStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsStochastic }; diff --git a/src/biomechanics/synthesis.ts b/src/biomechanics/synthesis.ts new file mode 100644 index 000000000..53545c463 --- /dev/null +++ b/src/biomechanics/synthesis.ts @@ -0,0 +1,14 @@ +/** biomechanics synthesis module — tsb analytics library. */ +export interface BiomechanicsSynthesisOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsSynthesisResult { values: number[]; converged: boolean; } +export function computeBiomechanicsSynthesis(data: number[], opts: BiomechanicsSynthesisOptions = {}): BiomechanicsSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsSynthesis }; diff --git a/src/biomechanics/topology.ts b/src/biomechanics/topology.ts new file mode 100644 index 000000000..a3c925aa6 --- /dev/null +++ b/src/biomechanics/topology.ts @@ -0,0 +1,14 @@ +/** biomechanics topology module — tsb analytics library. */ +export interface BiomechanicsTopologyOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsTopologyResult { values: number[]; converged: boolean; } +export function computeBiomechanicsTopology(data: number[], opts: BiomechanicsTopologyOptions = {}): BiomechanicsTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsTopology }; diff --git a/src/biomechanics/tracking.ts b/src/biomechanics/tracking.ts new file mode 100644 index 000000000..14b409f92 --- /dev/null +++ b/src/biomechanics/tracking.ts @@ -0,0 +1,14 @@ +/** biomechanics tracking module — tsb analytics library. */ +export interface BiomechanicsTrackingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsTrackingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsTracking(data: number[], opts: BiomechanicsTrackingOptions = {}): BiomechanicsTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsTracking }; diff --git a/src/biomechanics/transform.ts b/src/biomechanics/transform.ts new file mode 100644 index 000000000..d7dadabe8 --- /dev/null +++ b/src/biomechanics/transform.ts @@ -0,0 +1,14 @@ +/** biomechanics transform module — tsb analytics library. */ +export interface BiomechanicsTransformOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsTransformResult { values: number[]; converged: boolean; } +export function computeBiomechanicsTransform(data: number[], opts: BiomechanicsTransformOptions = {}): BiomechanicsTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsTransform }; diff --git a/src/biomechanics/uncertainty.ts b/src/biomechanics/uncertainty.ts new file mode 100644 index 000000000..9e1a3f97c --- /dev/null +++ b/src/biomechanics/uncertainty.ts @@ -0,0 +1,14 @@ +/** biomechanics uncertainty module — tsb analytics library. */ +export interface BiomechanicsUncertaintyOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsUncertaintyResult { values: number[]; converged: boolean; } +export function computeBiomechanicsUncertainty(data: number[], opts: BiomechanicsUncertaintyOptions = {}): BiomechanicsUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsUncertainty }; diff --git a/src/biomechanics/validation.ts b/src/biomechanics/validation.ts new file mode 100644 index 000000000..4a857ebf5 --- /dev/null +++ b/src/biomechanics/validation.ts @@ -0,0 +1,14 @@ +/** biomechanics validation module — tsb analytics library. */ +export interface BiomechanicsValidationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsValidationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsValidation(data: number[], opts: BiomechanicsValidationOptions = {}): BiomechanicsValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsValidation }; diff --git a/src/biomechanics/verification.ts b/src/biomechanics/verification.ts new file mode 100644 index 000000000..e7c039e5d --- /dev/null +++ b/src/biomechanics/verification.ts @@ -0,0 +1,14 @@ +/** biomechanics verification module — tsb analytics library. */ +export interface BiomechanicsVerificationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsVerificationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsVerification(data: number[], opts: BiomechanicsVerificationOptions = {}): BiomechanicsVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsVerification }; diff --git a/src/biomechanics/visualization.ts b/src/biomechanics/visualization.ts new file mode 100644 index 000000000..7640ce1be --- /dev/null +++ b/src/biomechanics/visualization.ts @@ -0,0 +1,14 @@ +/** biomechanics visualization module — tsb analytics library. */ +export interface BiomechanicsVisualizationOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsVisualizationResult { values: number[]; converged: boolean; } +export function computeBiomechanicsVisualization(data: number[], opts: BiomechanicsVisualizationOptions = {}): BiomechanicsVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsVisualization }; diff --git a/src/biomechanics/voting.ts b/src/biomechanics/voting.ts new file mode 100644 index 000000000..07486ad1e --- /dev/null +++ b/src/biomechanics/voting.ts @@ -0,0 +1,14 @@ +/** biomechanics voting module — tsb analytics library. */ +export interface BiomechanicsVotingOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsVotingResult { values: number[]; converged: boolean; } +export function computeBiomechanicsVoting(data: number[], opts: BiomechanicsVotingOptions = {}): BiomechanicsVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsVoting }; diff --git a/src/biomechanics/wavelet.ts b/src/biomechanics/wavelet.ts new file mode 100644 index 000000000..da7c14c32 --- /dev/null +++ b/src/biomechanics/wavelet.ts @@ -0,0 +1,14 @@ +/** biomechanics wavelet module — tsb analytics library. */ +export interface BiomechanicsWaveletOptions { tol?: number; maxIter?: number; } +export interface BiomechanicsWaveletResult { values: number[]; converged: boolean; } +export function computeBiomechanicsWavelet(data: number[], opts: BiomechanicsWaveletOptions = {}): BiomechanicsWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeBiomechanicsWavelet }; diff --git a/src/cardiology_sci/adaptation.ts b/src/cardiology_sci/adaptation.ts new file mode 100644 index 000000000..d0fe846bc --- /dev/null +++ b/src/cardiology_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci adaptation module — tsb analytics library. */ +export interface CardiologySciAdaptationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciAdaptationResult { values: number[]; converged: boolean; } +export function computeCardiologySciAdaptation(data: number[], opts: CardiologySciAdaptationOptions = {}): CardiologySciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciAdaptation }; diff --git a/src/cardiology_sci/aggregation.ts b/src/cardiology_sci/aggregation.ts new file mode 100644 index 000000000..c8a433220 --- /dev/null +++ b/src/cardiology_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci aggregation module — tsb analytics library. */ +export interface CardiologySciAggregationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciAggregationResult { values: number[]; converged: boolean; } +export function computeCardiologySciAggregation(data: number[], opts: CardiologySciAggregationOptions = {}): CardiologySciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciAggregation }; diff --git a/src/cardiology_sci/algebra.ts b/src/cardiology_sci/algebra.ts new file mode 100644 index 000000000..bdab1b0bf --- /dev/null +++ b/src/cardiology_sci/algebra.ts @@ -0,0 +1,14 @@ +/** cardiology_sci algebra module — tsb analytics library. */ +export interface CardiologySciAlgebraOptions { tol?: number; maxIter?: number; } +export interface CardiologySciAlgebraResult { values: number[]; converged: boolean; } +export function computeCardiologySciAlgebra(data: number[], opts: CardiologySciAlgebraOptions = {}): CardiologySciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciAlgebra }; diff --git a/src/cardiology_sci/alignment.ts b/src/cardiology_sci/alignment.ts new file mode 100644 index 000000000..99fa198e9 --- /dev/null +++ b/src/cardiology_sci/alignment.ts @@ -0,0 +1,14 @@ +/** cardiology_sci alignment module — tsb analytics library. */ +export interface CardiologySciAlignmentOptions { tol?: number; maxIter?: number; } +export interface CardiologySciAlignmentResult { values: number[]; converged: boolean; } +export function computeCardiologySciAlignment(data: number[], opts: CardiologySciAlignmentOptions = {}): CardiologySciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciAlignment }; diff --git a/src/cardiology_sci/analysis.ts b/src/cardiology_sci/analysis.ts new file mode 100644 index 000000000..d6ce8ad37 --- /dev/null +++ b/src/cardiology_sci/analysis.ts @@ -0,0 +1,14 @@ +/** cardiology_sci analysis module — tsb analytics library. */ +export interface CardiologySciAnalysisOptions { tol?: number; maxIter?: number; } +export interface CardiologySciAnalysisResult { values: number[]; converged: boolean; } +export function computeCardiologySciAnalysis(data: number[], opts: CardiologySciAnalysisOptions = {}): CardiologySciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciAnalysis }; diff --git a/src/cardiology_sci/augmentation.ts b/src/cardiology_sci/augmentation.ts new file mode 100644 index 000000000..c83bda8f8 --- /dev/null +++ b/src/cardiology_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci augmentation module — tsb analytics library. */ +export interface CardiologySciAugmentationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciAugmentationResult { values: number[]; converged: boolean; } +export function computeCardiologySciAugmentation(data: number[], opts: CardiologySciAugmentationOptions = {}): CardiologySciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciAugmentation }; diff --git a/src/cardiology_sci/bagging.ts b/src/cardiology_sci/bagging.ts new file mode 100644 index 000000000..868207887 --- /dev/null +++ b/src/cardiology_sci/bagging.ts @@ -0,0 +1,14 @@ +/** cardiology_sci bagging module — tsb analytics library. */ +export interface CardiologySciBaggingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciBaggingResult { values: number[]; converged: boolean; } +export function computeCardiologySciBagging(data: number[], opts: CardiologySciBaggingOptions = {}): CardiologySciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciBagging }; diff --git a/src/cardiology_sci/basis.ts b/src/cardiology_sci/basis.ts new file mode 100644 index 000000000..4a89c5e30 --- /dev/null +++ b/src/cardiology_sci/basis.ts @@ -0,0 +1,14 @@ +/** cardiology_sci basis module — tsb analytics library. */ +export interface CardiologySciBasisOptions { tol?: number; maxIter?: number; } +export interface CardiologySciBasisResult { values: number[]; converged: boolean; } +export function computeCardiologySciBasis(data: number[], opts: CardiologySciBasisOptions = {}): CardiologySciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciBasis }; diff --git a/src/cardiology_sci/benchmarking.ts b/src/cardiology_sci/benchmarking.ts new file mode 100644 index 000000000..ca1f5ff3c --- /dev/null +++ b/src/cardiology_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** cardiology_sci benchmarking module — tsb analytics library. */ +export interface CardiologySciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeCardiologySciBenchmarking(data: number[], opts: CardiologySciBenchmarkingOptions = {}): CardiologySciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciBenchmarking }; diff --git a/src/cardiology_sci/blending.ts b/src/cardiology_sci/blending.ts new file mode 100644 index 000000000..c092f3dd5 --- /dev/null +++ b/src/cardiology_sci/blending.ts @@ -0,0 +1,14 @@ +/** cardiology_sci blending module — tsb analytics library. */ +export interface CardiologySciBlendingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciBlendingResult { values: number[]; converged: boolean; } +export function computeCardiologySciBlending(data: number[], opts: CardiologySciBlendingOptions = {}): CardiologySciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciBlending }; diff --git a/src/cardiology_sci/boosting.ts b/src/cardiology_sci/boosting.ts new file mode 100644 index 000000000..3e0068407 --- /dev/null +++ b/src/cardiology_sci/boosting.ts @@ -0,0 +1,14 @@ +/** cardiology_sci boosting module — tsb analytics library. */ +export interface CardiologySciBoostingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciBoostingResult { values: number[]; converged: boolean; } +export function computeCardiologySciBoosting(data: number[], opts: CardiologySciBoostingOptions = {}): CardiologySciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciBoosting }; diff --git a/src/cardiology_sci/bootstrap.ts b/src/cardiology_sci/bootstrap.ts new file mode 100644 index 000000000..3a1f7da94 --- /dev/null +++ b/src/cardiology_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** cardiology_sci bootstrap module — tsb analytics library. */ +export interface CardiologySciBootstrapOptions { tol?: number; maxIter?: number; } +export interface CardiologySciBootstrapResult { values: number[]; converged: boolean; } +export function computeCardiologySciBootstrap(data: number[], opts: CardiologySciBootstrapOptions = {}): CardiologySciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciBootstrap }; diff --git a/src/cardiology_sci/calculus.ts b/src/cardiology_sci/calculus.ts new file mode 100644 index 000000000..37c16c562 --- /dev/null +++ b/src/cardiology_sci/calculus.ts @@ -0,0 +1,14 @@ +/** cardiology_sci calculus module — tsb analytics library. */ +export interface CardiologySciCalculusOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCalculusResult { values: number[]; converged: boolean; } +export function computeCardiologySciCalculus(data: number[], opts: CardiologySciCalculusOptions = {}): CardiologySciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCalculus }; diff --git a/src/cardiology_sci/calibration.ts b/src/cardiology_sci/calibration.ts new file mode 100644 index 000000000..5e988f6f7 --- /dev/null +++ b/src/cardiology_sci/calibration.ts @@ -0,0 +1,14 @@ +/** cardiology_sci calibration module — tsb analytics library. */ +export interface CardiologySciCalibrationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCalibrationResult { values: number[]; converged: boolean; } +export function computeCardiologySciCalibration(data: number[], opts: CardiologySciCalibrationOptions = {}): CardiologySciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCalibration }; diff --git a/src/cardiology_sci/characterization.ts b/src/cardiology_sci/characterization.ts new file mode 100644 index 000000000..7b05d8f44 --- /dev/null +++ b/src/cardiology_sci/characterization.ts @@ -0,0 +1,14 @@ +/** cardiology_sci characterization module — tsb analytics library. */ +export interface CardiologySciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCharacterizationResult { values: number[]; converged: boolean; } +export function computeCardiologySciCharacterization(data: number[], opts: CardiologySciCharacterizationOptions = {}): CardiologySciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCharacterization }; diff --git a/src/cardiology_sci/classification.ts b/src/cardiology_sci/classification.ts new file mode 100644 index 000000000..845bac850 --- /dev/null +++ b/src/cardiology_sci/classification.ts @@ -0,0 +1,14 @@ +/** cardiology_sci classification module — tsb analytics library. */ +export interface CardiologySciClassificationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciClassificationResult { values: number[]; converged: boolean; } +export function computeCardiologySciClassification(data: number[], opts: CardiologySciClassificationOptions = {}): CardiologySciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciClassification }; diff --git a/src/cardiology_sci/clustering.ts b/src/cardiology_sci/clustering.ts new file mode 100644 index 000000000..7c8cd7aa8 --- /dev/null +++ b/src/cardiology_sci/clustering.ts @@ -0,0 +1,14 @@ +/** cardiology_sci clustering module — tsb analytics library. */ +export interface CardiologySciClusteringOptions { tol?: number; maxIter?: number; } +export interface CardiologySciClusteringResult { values: number[]; converged: boolean; } +export function computeCardiologySciClustering(data: number[], opts: CardiologySciClusteringOptions = {}): CardiologySciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciClustering }; diff --git a/src/cardiology_sci/compression.ts b/src/cardiology_sci/compression.ts new file mode 100644 index 000000000..e2addac5f --- /dev/null +++ b/src/cardiology_sci/compression.ts @@ -0,0 +1,14 @@ +/** cardiology_sci compression module — tsb analytics library. */ +export interface CardiologySciCompressionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCompressionResult { values: number[]; converged: boolean; } +export function computeCardiologySciCompression(data: number[], opts: CardiologySciCompressionOptions = {}): CardiologySciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCompression }; diff --git a/src/cardiology_sci/continuous.ts b/src/cardiology_sci/continuous.ts new file mode 100644 index 000000000..c99bb8126 --- /dev/null +++ b/src/cardiology_sci/continuous.ts @@ -0,0 +1,14 @@ +/** cardiology_sci continuous module — tsb analytics library. */ +export interface CardiologySciContinuousOptions { tol?: number; maxIter?: number; } +export interface CardiologySciContinuousResult { values: number[]; converged: boolean; } +export function computeCardiologySciContinuous(data: number[], opts: CardiologySciContinuousOptions = {}): CardiologySciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciContinuous }; diff --git a/src/cardiology_sci/control.ts b/src/cardiology_sci/control.ts new file mode 100644 index 000000000..4daa25e70 --- /dev/null +++ b/src/cardiology_sci/control.ts @@ -0,0 +1,14 @@ +/** cardiology_sci control module — tsb analytics library. */ +export interface CardiologySciControlOptions { tol?: number; maxIter?: number; } +export interface CardiologySciControlResult { values: number[]; converged: boolean; } +export function computeCardiologySciControl(data: number[], opts: CardiologySciControlOptions = {}): CardiologySciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciControl }; diff --git a/src/cardiology_sci/convergence.ts b/src/cardiology_sci/convergence.ts new file mode 100644 index 000000000..74def55af --- /dev/null +++ b/src/cardiology_sci/convergence.ts @@ -0,0 +1,14 @@ +/** cardiology_sci convergence module — tsb analytics library. */ +export interface CardiologySciConvergenceOptions { tol?: number; maxIter?: number; } +export interface CardiologySciConvergenceResult { values: number[]; converged: boolean; } +export function computeCardiologySciConvergence(data: number[], opts: CardiologySciConvergenceOptions = {}): CardiologySciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciConvergence }; diff --git a/src/cardiology_sci/convex.ts b/src/cardiology_sci/convex.ts new file mode 100644 index 000000000..4637d2f3e --- /dev/null +++ b/src/cardiology_sci/convex.ts @@ -0,0 +1,14 @@ +/** cardiology_sci convex module — tsb analytics library. */ +export interface CardiologySciConvexOptions { tol?: number; maxIter?: number; } +export interface CardiologySciConvexResult { values: number[]; converged: boolean; } +export function computeCardiologySciConvex(data: number[], opts: CardiologySciConvexOptions = {}): CardiologySciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciConvex }; diff --git a/src/cardiology_sci/correlation.ts b/src/cardiology_sci/correlation.ts new file mode 100644 index 000000000..498b824b0 --- /dev/null +++ b/src/cardiology_sci/correlation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci correlation module — tsb analytics library. */ +export interface CardiologySciCorrelationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCorrelationResult { values: number[]; converged: boolean; } +export function computeCardiologySciCorrelation(data: number[], opts: CardiologySciCorrelationOptions = {}): CardiologySciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCorrelation }; diff --git a/src/cardiology_sci/covariance.ts b/src/cardiology_sci/covariance.ts new file mode 100644 index 000000000..2a4a3ebd1 --- /dev/null +++ b/src/cardiology_sci/covariance.ts @@ -0,0 +1,14 @@ +/** cardiology_sci covariance module — tsb analytics library. */ +export interface CardiologySciCovarianceOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCovarianceResult { values: number[]; converged: boolean; } +export function computeCardiologySciCovariance(data: number[], opts: CardiologySciCovarianceOptions = {}): CardiologySciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCovariance }; diff --git a/src/cardiology_sci/cross_validation.ts b/src/cardiology_sci/cross_validation.ts new file mode 100644 index 000000000..77f14227e --- /dev/null +++ b/src/cardiology_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci cross_validation module — tsb analytics library. */ +export interface CardiologySciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciCrossValidationResult { values: number[]; converged: boolean; } +export function computeCardiologySciCrossValidation(data: number[], opts: CardiologySciCrossValidationOptions = {}): CardiologySciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciCrossValidation }; diff --git a/src/cardiology_sci/decoding.ts b/src/cardiology_sci/decoding.ts new file mode 100644 index 000000000..f44774c8a --- /dev/null +++ b/src/cardiology_sci/decoding.ts @@ -0,0 +1,14 @@ +/** cardiology_sci decoding module — tsb analytics library. */ +export interface CardiologySciDecodingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDecodingResult { values: number[]; converged: boolean; } +export function computeCardiologySciDecoding(data: number[], opts: CardiologySciDecodingOptions = {}): CardiologySciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDecoding }; diff --git a/src/cardiology_sci/decomposition.ts b/src/cardiology_sci/decomposition.ts new file mode 100644 index 000000000..2452fad38 --- /dev/null +++ b/src/cardiology_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** cardiology_sci decomposition module — tsb analytics library. */ +export interface CardiologySciDecompositionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDecompositionResult { values: number[]; converged: boolean; } +export function computeCardiologySciDecomposition(data: number[], opts: CardiologySciDecompositionOptions = {}): CardiologySciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDecomposition }; diff --git a/src/cardiology_sci/detection.ts b/src/cardiology_sci/detection.ts new file mode 100644 index 000000000..a7dd515a4 --- /dev/null +++ b/src/cardiology_sci/detection.ts @@ -0,0 +1,14 @@ +/** cardiology_sci detection module — tsb analytics library. */ +export interface CardiologySciDetectionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDetectionResult { values: number[]; converged: boolean; } +export function computeCardiologySciDetection(data: number[], opts: CardiologySciDetectionOptions = {}): CardiologySciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDetection }; diff --git a/src/cardiology_sci/deterministic.ts b/src/cardiology_sci/deterministic.ts new file mode 100644 index 000000000..03abe66e9 --- /dev/null +++ b/src/cardiology_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** cardiology_sci deterministic module — tsb analytics library. */ +export interface CardiologySciDeterministicOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDeterministicResult { values: number[]; converged: boolean; } +export function computeCardiologySciDeterministic(data: number[], opts: CardiologySciDeterministicOptions = {}): CardiologySciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDeterministic }; diff --git a/src/cardiology_sci/diagnostics.ts b/src/cardiology_sci/diagnostics.ts new file mode 100644 index 000000000..f5dec2128 --- /dev/null +++ b/src/cardiology_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** cardiology_sci diagnostics module — tsb analytics library. */ +export interface CardiologySciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeCardiologySciDiagnostics(data: number[], opts: CardiologySciDiagnosticsOptions = {}): CardiologySciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDiagnostics }; diff --git a/src/cardiology_sci/differential.ts b/src/cardiology_sci/differential.ts new file mode 100644 index 000000000..1ca4e645f --- /dev/null +++ b/src/cardiology_sci/differential.ts @@ -0,0 +1,14 @@ +/** cardiology_sci differential module — tsb analytics library. */ +export interface CardiologySciDifferentialOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDifferentialResult { values: number[]; converged: boolean; } +export function computeCardiologySciDifferential(data: number[], opts: CardiologySciDifferentialOptions = {}): CardiologySciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDifferential }; diff --git a/src/cardiology_sci/discrete.ts b/src/cardiology_sci/discrete.ts new file mode 100644 index 000000000..b5e54f99b --- /dev/null +++ b/src/cardiology_sci/discrete.ts @@ -0,0 +1,14 @@ +/** cardiology_sci discrete module — tsb analytics library. */ +export interface CardiologySciDiscreteOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDiscreteResult { values: number[]; converged: boolean; } +export function computeCardiologySciDiscrete(data: number[], opts: CardiologySciDiscreteOptions = {}): CardiologySciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDiscrete }; diff --git a/src/cardiology_sci/distribution.ts b/src/cardiology_sci/distribution.ts new file mode 100644 index 000000000..af97cc550 --- /dev/null +++ b/src/cardiology_sci/distribution.ts @@ -0,0 +1,14 @@ +/** cardiology_sci distribution module — tsb analytics library. */ +export interface CardiologySciDistributionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDistributionResult { values: number[]; converged: boolean; } +export function computeCardiologySciDistribution(data: number[], opts: CardiologySciDistributionOptions = {}): CardiologySciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDistribution }; diff --git a/src/cardiology_sci/dynamic.ts b/src/cardiology_sci/dynamic.ts new file mode 100644 index 000000000..69490866b --- /dev/null +++ b/src/cardiology_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** cardiology_sci dynamic module — tsb analytics library. */ +export interface CardiologySciDynamicOptions { tol?: number; maxIter?: number; } +export interface CardiologySciDynamicResult { values: number[]; converged: boolean; } +export function computeCardiologySciDynamic(data: number[], opts: CardiologySciDynamicOptions = {}): CardiologySciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciDynamic }; diff --git a/src/cardiology_sci/embedding.ts b/src/cardiology_sci/embedding.ts new file mode 100644 index 000000000..2cfd0b391 --- /dev/null +++ b/src/cardiology_sci/embedding.ts @@ -0,0 +1,14 @@ +/** cardiology_sci embedding module — tsb analytics library. */ +export interface CardiologySciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciEmbeddingResult { values: number[]; converged: boolean; } +export function computeCardiologySciEmbedding(data: number[], opts: CardiologySciEmbeddingOptions = {}): CardiologySciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciEmbedding }; diff --git a/src/cardiology_sci/encoding.ts b/src/cardiology_sci/encoding.ts new file mode 100644 index 000000000..961b9cb20 --- /dev/null +++ b/src/cardiology_sci/encoding.ts @@ -0,0 +1,14 @@ +/** cardiology_sci encoding module — tsb analytics library. */ +export interface CardiologySciEncodingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciEncodingResult { values: number[]; converged: boolean; } +export function computeCardiologySciEncoding(data: number[], opts: CardiologySciEncodingOptions = {}): CardiologySciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciEncoding }; diff --git a/src/cardiology_sci/ensemble.ts b/src/cardiology_sci/ensemble.ts new file mode 100644 index 000000000..51cf0303e --- /dev/null +++ b/src/cardiology_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** cardiology_sci ensemble module — tsb analytics library. */ +export interface CardiologySciEnsembleOptions { tol?: number; maxIter?: number; } +export interface CardiologySciEnsembleResult { values: number[]; converged: boolean; } +export function computeCardiologySciEnsemble(data: number[], opts: CardiologySciEnsembleOptions = {}): CardiologySciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciEnsemble }; diff --git a/src/cardiology_sci/estimation.ts b/src/cardiology_sci/estimation.ts new file mode 100644 index 000000000..36755491c --- /dev/null +++ b/src/cardiology_sci/estimation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci estimation module — tsb analytics library. */ +export interface CardiologySciEstimationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciEstimationResult { values: number[]; converged: boolean; } +export function computeCardiologySciEstimation(data: number[], opts: CardiologySciEstimationOptions = {}): CardiologySciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciEstimation }; diff --git a/src/cardiology_sci/evaluation.ts b/src/cardiology_sci/evaluation.ts new file mode 100644 index 000000000..376178371 --- /dev/null +++ b/src/cardiology_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci evaluation module — tsb analytics library. */ +export interface CardiologySciEvaluationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciEvaluationResult { values: number[]; converged: boolean; } +export function computeCardiologySciEvaluation(data: number[], opts: CardiologySciEvaluationOptions = {}): CardiologySciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciEvaluation }; diff --git a/src/cardiology_sci/extrapolation.ts b/src/cardiology_sci/extrapolation.ts new file mode 100644 index 000000000..e9d3c5d0c --- /dev/null +++ b/src/cardiology_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci extrapolation module — tsb analytics library. */ +export interface CardiologySciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciExtrapolationResult { values: number[]; converged: boolean; } +export function computeCardiologySciExtrapolation(data: number[], opts: CardiologySciExtrapolationOptions = {}): CardiologySciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciExtrapolation }; diff --git a/src/cardiology_sci/features.ts b/src/cardiology_sci/features.ts new file mode 100644 index 000000000..72636f3dc --- /dev/null +++ b/src/cardiology_sci/features.ts @@ -0,0 +1,14 @@ +/** cardiology_sci features module — tsb analytics library. */ +export interface CardiologySciFeaturesOptions { tol?: number; maxIter?: number; } +export interface CardiologySciFeaturesResult { values: number[]; converged: boolean; } +export function computeCardiologySciFeatures(data: number[], opts: CardiologySciFeaturesOptions = {}): CardiologySciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciFeatures }; diff --git a/src/cardiology_sci/feedback.ts b/src/cardiology_sci/feedback.ts new file mode 100644 index 000000000..171bf003c --- /dev/null +++ b/src/cardiology_sci/feedback.ts @@ -0,0 +1,14 @@ +/** cardiology_sci feedback module — tsb analytics library. */ +export interface CardiologySciFeedbackOptions { tol?: number; maxIter?: number; } +export interface CardiologySciFeedbackResult { values: number[]; converged: boolean; } +export function computeCardiologySciFeedback(data: number[], opts: CardiologySciFeedbackOptions = {}): CardiologySciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciFeedback }; diff --git a/src/cardiology_sci/filtering.ts b/src/cardiology_sci/filtering.ts new file mode 100644 index 000000000..eea15a342 --- /dev/null +++ b/src/cardiology_sci/filtering.ts @@ -0,0 +1,14 @@ +/** cardiology_sci filtering module — tsb analytics library. */ +export interface CardiologySciFilteringOptions { tol?: number; maxIter?: number; } +export interface CardiologySciFilteringResult { values: number[]; converged: boolean; } +export function computeCardiologySciFiltering(data: number[], opts: CardiologySciFilteringOptions = {}): CardiologySciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciFiltering }; diff --git a/src/cardiology_sci/fourier.ts b/src/cardiology_sci/fourier.ts new file mode 100644 index 000000000..b08c0a262 --- /dev/null +++ b/src/cardiology_sci/fourier.ts @@ -0,0 +1,14 @@ +/** cardiology_sci fourier module — tsb analytics library. */ +export interface CardiologySciFourierOptions { tol?: number; maxIter?: number; } +export interface CardiologySciFourierResult { values: number[]; converged: boolean; } +export function computeCardiologySciFourier(data: number[], opts: CardiologySciFourierOptions = {}): CardiologySciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciFourier }; diff --git a/src/cardiology_sci/fusion.ts b/src/cardiology_sci/fusion.ts new file mode 100644 index 000000000..4bba2b1e0 --- /dev/null +++ b/src/cardiology_sci/fusion.ts @@ -0,0 +1,14 @@ +/** cardiology_sci fusion module — tsb analytics library. */ +export interface CardiologySciFusionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciFusionResult { values: number[]; converged: boolean; } +export function computeCardiologySciFusion(data: number[], opts: CardiologySciFusionOptions = {}): CardiologySciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciFusion }; diff --git a/src/cardiology_sci/generation.ts b/src/cardiology_sci/generation.ts new file mode 100644 index 000000000..d28e70f6d --- /dev/null +++ b/src/cardiology_sci/generation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci generation module — tsb analytics library. */ +export interface CardiologySciGenerationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciGenerationResult { values: number[]; converged: boolean; } +export function computeCardiologySciGeneration(data: number[], opts: CardiologySciGenerationOptions = {}): CardiologySciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciGeneration }; diff --git a/src/cardiology_sci/geometry.ts b/src/cardiology_sci/geometry.ts new file mode 100644 index 000000000..b6caede03 --- /dev/null +++ b/src/cardiology_sci/geometry.ts @@ -0,0 +1,14 @@ +/** cardiology_sci geometry module — tsb analytics library. */ +export interface CardiologySciGeometryOptions { tol?: number; maxIter?: number; } +export interface CardiologySciGeometryResult { values: number[]; converged: boolean; } +export function computeCardiologySciGeometry(data: number[], opts: CardiologySciGeometryOptions = {}): CardiologySciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciGeometry }; diff --git a/src/cardiology_sci/gradient.ts b/src/cardiology_sci/gradient.ts new file mode 100644 index 000000000..c18b35287 --- /dev/null +++ b/src/cardiology_sci/gradient.ts @@ -0,0 +1,14 @@ +/** cardiology_sci gradient module — tsb analytics library. */ +export interface CardiologySciGradientOptions { tol?: number; maxIter?: number; } +export interface CardiologySciGradientResult { values: number[]; converged: boolean; } +export function computeCardiologySciGradient(data: number[], opts: CardiologySciGradientOptions = {}): CardiologySciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciGradient }; diff --git a/src/cardiology_sci/hessian.ts b/src/cardiology_sci/hessian.ts new file mode 100644 index 000000000..7691054eb --- /dev/null +++ b/src/cardiology_sci/hessian.ts @@ -0,0 +1,14 @@ +/** cardiology_sci hessian module — tsb analytics library. */ +export interface CardiologySciHessianOptions { tol?: number; maxIter?: number; } +export interface CardiologySciHessianResult { values: number[]; converged: boolean; } +export function computeCardiologySciHessian(data: number[], opts: CardiologySciHessianOptions = {}): CardiologySciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciHessian }; diff --git a/src/cardiology_sci/hypothesis.ts b/src/cardiology_sci/hypothesis.ts new file mode 100644 index 000000000..2b6355502 --- /dev/null +++ b/src/cardiology_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** cardiology_sci hypothesis module — tsb analytics library. */ +export interface CardiologySciHypothesisOptions { tol?: number; maxIter?: number; } +export interface CardiologySciHypothesisResult { values: number[]; converged: boolean; } +export function computeCardiologySciHypothesis(data: number[], opts: CardiologySciHypothesisOptions = {}): CardiologySciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciHypothesis }; diff --git a/src/cardiology_sci/inference.ts b/src/cardiology_sci/inference.ts new file mode 100644 index 000000000..385b49217 --- /dev/null +++ b/src/cardiology_sci/inference.ts @@ -0,0 +1,14 @@ +/** cardiology_sci inference module — tsb analytics library. */ +export interface CardiologySciInferenceOptions { tol?: number; maxIter?: number; } +export interface CardiologySciInferenceResult { values: number[]; converged: boolean; } +export function computeCardiologySciInference(data: number[], opts: CardiologySciInferenceOptions = {}): CardiologySciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciInference }; diff --git a/src/cardiology_sci/inference2.ts b/src/cardiology_sci/inference2.ts new file mode 100644 index 000000000..32985915d --- /dev/null +++ b/src/cardiology_sci/inference2.ts @@ -0,0 +1,14 @@ +/** cardiology_sci inference2 module — tsb analytics library. */ +export interface CardiologySciInferenceOptions { tol?: number; maxIter?: number; } +export interface CardiologySciInferenceResult { values: number[]; converged: boolean; } +export function computeCardiologySciInference(data: number[], opts: CardiologySciInferenceOptions = {}): CardiologySciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciInference }; diff --git a/src/cardiology_sci/integral.ts b/src/cardiology_sci/integral.ts new file mode 100644 index 000000000..b55abc2a5 --- /dev/null +++ b/src/cardiology_sci/integral.ts @@ -0,0 +1,14 @@ +/** cardiology_sci integral module — tsb analytics library. */ +export interface CardiologySciIntegralOptions { tol?: number; maxIter?: number; } +export interface CardiologySciIntegralResult { values: number[]; converged: boolean; } +export function computeCardiologySciIntegral(data: number[], opts: CardiologySciIntegralOptions = {}): CardiologySciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciIntegral }; diff --git a/src/cardiology_sci/integration.ts b/src/cardiology_sci/integration.ts new file mode 100644 index 000000000..428566b52 --- /dev/null +++ b/src/cardiology_sci/integration.ts @@ -0,0 +1,14 @@ +/** cardiology_sci integration module — tsb analytics library. */ +export interface CardiologySciIntegrationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciIntegrationResult { values: number[]; converged: boolean; } +export function computeCardiologySciIntegration(data: number[], opts: CardiologySciIntegrationOptions = {}): CardiologySciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciIntegration }; diff --git a/src/cardiology_sci/interpolation.ts b/src/cardiology_sci/interpolation.ts new file mode 100644 index 000000000..16e5e5dd7 --- /dev/null +++ b/src/cardiology_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci interpolation module — tsb analytics library. */ +export interface CardiologySciInterpolationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciInterpolationResult { values: number[]; converged: boolean; } +export function computeCardiologySciInterpolation(data: number[], opts: CardiologySciInterpolationOptions = {}): CardiologySciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciInterpolation }; diff --git a/src/cardiology_sci/jacobian.ts b/src/cardiology_sci/jacobian.ts new file mode 100644 index 000000000..6e1476f53 --- /dev/null +++ b/src/cardiology_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** cardiology_sci jacobian module — tsb analytics library. */ +export interface CardiologySciJacobianOptions { tol?: number; maxIter?: number; } +export interface CardiologySciJacobianResult { values: number[]; converged: boolean; } +export function computeCardiologySciJacobian(data: number[], opts: CardiologySciJacobianOptions = {}): CardiologySciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciJacobian }; diff --git a/src/cardiology_sci/kernel.ts b/src/cardiology_sci/kernel.ts new file mode 100644 index 000000000..50a35c8f6 --- /dev/null +++ b/src/cardiology_sci/kernel.ts @@ -0,0 +1,14 @@ +/** cardiology_sci kernel module — tsb analytics library. */ +export interface CardiologySciKernelOptions { tol?: number; maxIter?: number; } +export interface CardiologySciKernelResult { values: number[]; converged: boolean; } +export function computeCardiologySciKernel(data: number[], opts: CardiologySciKernelOptions = {}): CardiologySciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciKernel }; diff --git a/src/cardiology_sci/laplacian.ts b/src/cardiology_sci/laplacian.ts new file mode 100644 index 000000000..0bf5f7bd4 --- /dev/null +++ b/src/cardiology_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** cardiology_sci laplacian module — tsb analytics library. */ +export interface CardiologySciLaplacianOptions { tol?: number; maxIter?: number; } +export interface CardiologySciLaplacianResult { values: number[]; converged: boolean; } +export function computeCardiologySciLaplacian(data: number[], opts: CardiologySciLaplacianOptions = {}): CardiologySciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciLaplacian }; diff --git a/src/cardiology_sci/learning.ts b/src/cardiology_sci/learning.ts new file mode 100644 index 000000000..c23a745a7 --- /dev/null +++ b/src/cardiology_sci/learning.ts @@ -0,0 +1,14 @@ +/** cardiology_sci learning module — tsb analytics library. */ +export interface CardiologySciLearningOptions { tol?: number; maxIter?: number; } +export interface CardiologySciLearningResult { values: number[]; converged: boolean; } +export function computeCardiologySciLearning(data: number[], opts: CardiologySciLearningOptions = {}): CardiologySciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciLearning }; diff --git a/src/cardiology_sci/linear.ts b/src/cardiology_sci/linear.ts new file mode 100644 index 000000000..1f1bc979a --- /dev/null +++ b/src/cardiology_sci/linear.ts @@ -0,0 +1,14 @@ +/** cardiology_sci linear module — tsb analytics library. */ +export interface CardiologySciLinearOptions { tol?: number; maxIter?: number; } +export interface CardiologySciLinearResult { values: number[]; converged: boolean; } +export function computeCardiologySciLinear(data: number[], opts: CardiologySciLinearOptions = {}): CardiologySciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciLinear }; diff --git a/src/cardiology_sci/manifold.ts b/src/cardiology_sci/manifold.ts new file mode 100644 index 000000000..b9ab76de5 --- /dev/null +++ b/src/cardiology_sci/manifold.ts @@ -0,0 +1,14 @@ +/** cardiology_sci manifold module — tsb analytics library. */ +export interface CardiologySciManifoldOptions { tol?: number; maxIter?: number; } +export interface CardiologySciManifoldResult { values: number[]; converged: boolean; } +export function computeCardiologySciManifold(data: number[], opts: CardiologySciManifoldOptions = {}): CardiologySciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciManifold }; diff --git a/src/cardiology_sci/matching.ts b/src/cardiology_sci/matching.ts new file mode 100644 index 000000000..e1601980f --- /dev/null +++ b/src/cardiology_sci/matching.ts @@ -0,0 +1,14 @@ +/** cardiology_sci matching module — tsb analytics library. */ +export interface CardiologySciMatchingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciMatchingResult { values: number[]; converged: boolean; } +export function computeCardiologySciMatching(data: number[], opts: CardiologySciMatchingOptions = {}): CardiologySciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciMatching }; diff --git a/src/cardiology_sci/measurement.ts b/src/cardiology_sci/measurement.ts new file mode 100644 index 000000000..023bd5237 --- /dev/null +++ b/src/cardiology_sci/measurement.ts @@ -0,0 +1,14 @@ +/** cardiology_sci measurement module — tsb analytics library. */ +export interface CardiologySciMeasurementOptions { tol?: number; maxIter?: number; } +export interface CardiologySciMeasurementResult { values: number[]; converged: boolean; } +export function computeCardiologySciMeasurement(data: number[], opts: CardiologySciMeasurementOptions = {}): CardiologySciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciMeasurement }; diff --git a/src/cardiology_sci/metrics.ts b/src/cardiology_sci/metrics.ts new file mode 100644 index 000000000..69434c36a --- /dev/null +++ b/src/cardiology_sci/metrics.ts @@ -0,0 +1,14 @@ +/** cardiology_sci metrics module — tsb analytics library. */ +export interface CardiologySciMetricsOptions { tol?: number; maxIter?: number; } +export interface CardiologySciMetricsResult { values: number[]; converged: boolean; } +export function computeCardiologySciMetrics(data: number[], opts: CardiologySciMetricsOptions = {}): CardiologySciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciMetrics }; diff --git a/src/cardiology_sci/modeling.ts b/src/cardiology_sci/modeling.ts new file mode 100644 index 000000000..968571bb0 --- /dev/null +++ b/src/cardiology_sci/modeling.ts @@ -0,0 +1,14 @@ +/** cardiology_sci modeling module — tsb analytics library. */ +export interface CardiologySciModelingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciModelingResult { values: number[]; converged: boolean; } +export function computeCardiologySciModeling(data: number[], opts: CardiologySciModelingOptions = {}): CardiologySciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciModeling }; diff --git a/src/cardiology_sci/monitoring.ts b/src/cardiology_sci/monitoring.ts new file mode 100644 index 000000000..efd218f9f --- /dev/null +++ b/src/cardiology_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** cardiology_sci monitoring module — tsb analytics library. */ +export interface CardiologySciMonitoringOptions { tol?: number; maxIter?: number; } +export interface CardiologySciMonitoringResult { values: number[]; converged: boolean; } +export function computeCardiologySciMonitoring(data: number[], opts: CardiologySciMonitoringOptions = {}): CardiologySciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciMonitoring }; diff --git a/src/cardiology_sci/nonlinear.ts b/src/cardiology_sci/nonlinear.ts new file mode 100644 index 000000000..9386038cc --- /dev/null +++ b/src/cardiology_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** cardiology_sci nonlinear module — tsb analytics library. */ +export interface CardiologySciNonlinearOptions { tol?: number; maxIter?: number; } +export interface CardiologySciNonlinearResult { values: number[]; converged: boolean; } +export function computeCardiologySciNonlinear(data: number[], opts: CardiologySciNonlinearOptions = {}): CardiologySciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciNonlinear }; diff --git a/src/cardiology_sci/normalization.ts b/src/cardiology_sci/normalization.ts new file mode 100644 index 000000000..7c57ebc0e --- /dev/null +++ b/src/cardiology_sci/normalization.ts @@ -0,0 +1,14 @@ +/** cardiology_sci normalization module — tsb analytics library. */ +export interface CardiologySciNormalizationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciNormalizationResult { values: number[]; converged: boolean; } +export function computeCardiologySciNormalization(data: number[], opts: CardiologySciNormalizationOptions = {}): CardiologySciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciNormalization }; diff --git a/src/cardiology_sci/optimization.ts b/src/cardiology_sci/optimization.ts new file mode 100644 index 000000000..43fbcc46f --- /dev/null +++ b/src/cardiology_sci/optimization.ts @@ -0,0 +1,14 @@ +/** cardiology_sci optimization module — tsb analytics library. */ +export interface CardiologySciOptimizationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciOptimizationResult { values: number[]; converged: boolean; } +export function computeCardiologySciOptimization(data: number[], opts: CardiologySciOptimizationOptions = {}): CardiologySciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciOptimization }; diff --git a/src/cardiology_sci/patterns.ts b/src/cardiology_sci/patterns.ts new file mode 100644 index 000000000..e32eef6ca --- /dev/null +++ b/src/cardiology_sci/patterns.ts @@ -0,0 +1,14 @@ +/** cardiology_sci patterns module — tsb analytics library. */ +export interface CardiologySciPatternsOptions { tol?: number; maxIter?: number; } +export interface CardiologySciPatternsResult { values: number[]; converged: boolean; } +export function computeCardiologySciPatterns(data: number[], opts: CardiologySciPatternsOptions = {}): CardiologySciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciPatterns }; diff --git a/src/cardiology_sci/permutation.ts b/src/cardiology_sci/permutation.ts new file mode 100644 index 000000000..946149038 --- /dev/null +++ b/src/cardiology_sci/permutation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci permutation module — tsb analytics library. */ +export interface CardiologySciPermutationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciPermutationResult { values: number[]; converged: boolean; } +export function computeCardiologySciPermutation(data: number[], opts: CardiologySciPermutationOptions = {}): CardiologySciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciPermutation }; diff --git a/src/cardiology_sci/prediction.ts b/src/cardiology_sci/prediction.ts new file mode 100644 index 000000000..f8f50cfa4 --- /dev/null +++ b/src/cardiology_sci/prediction.ts @@ -0,0 +1,14 @@ +/** cardiology_sci prediction module — tsb analytics library. */ +export interface CardiologySciPredictionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciPredictionResult { values: number[]; converged: boolean; } +export function computeCardiologySciPrediction(data: number[], opts: CardiologySciPredictionOptions = {}): CardiologySciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciPrediction }; diff --git a/src/cardiology_sci/processing.ts b/src/cardiology_sci/processing.ts new file mode 100644 index 000000000..da8325905 --- /dev/null +++ b/src/cardiology_sci/processing.ts @@ -0,0 +1,14 @@ +/** cardiology_sci processing module — tsb analytics library. */ +export interface CardiologySciProcessingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciProcessingResult { values: number[]; converged: boolean; } +export function computeCardiologySciProcessing(data: number[], opts: CardiologySciProcessingOptions = {}): CardiologySciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciProcessing }; diff --git a/src/cardiology_sci/profiling.ts b/src/cardiology_sci/profiling.ts new file mode 100644 index 000000000..49460bd0b --- /dev/null +++ b/src/cardiology_sci/profiling.ts @@ -0,0 +1,14 @@ +/** cardiology_sci profiling module — tsb analytics library. */ +export interface CardiologySciProfilingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciProfilingResult { values: number[]; converged: boolean; } +export function computeCardiologySciProfiling(data: number[], opts: CardiologySciProfilingOptions = {}): CardiologySciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciProfiling }; diff --git a/src/cardiology_sci/projection.ts b/src/cardiology_sci/projection.ts new file mode 100644 index 000000000..47a00bb07 --- /dev/null +++ b/src/cardiology_sci/projection.ts @@ -0,0 +1,14 @@ +/** cardiology_sci projection module — tsb analytics library. */ +export interface CardiologySciProjectionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciProjectionResult { values: number[]; converged: boolean; } +export function computeCardiologySciProjection(data: number[], opts: CardiologySciProjectionOptions = {}): CardiologySciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciProjection }; diff --git a/src/cardiology_sci/ranking.ts b/src/cardiology_sci/ranking.ts new file mode 100644 index 000000000..41a0866d6 --- /dev/null +++ b/src/cardiology_sci/ranking.ts @@ -0,0 +1,14 @@ +/** cardiology_sci ranking module — tsb analytics library. */ +export interface CardiologySciRankingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciRankingResult { values: number[]; converged: boolean; } +export function computeCardiologySciRanking(data: number[], opts: CardiologySciRankingOptions = {}): CardiologySciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciRanking }; diff --git a/src/cardiology_sci/reconstruction.ts b/src/cardiology_sci/reconstruction.ts new file mode 100644 index 000000000..b67db87d8 --- /dev/null +++ b/src/cardiology_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** cardiology_sci reconstruction module — tsb analytics library. */ +export interface CardiologySciReconstructionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciReconstructionResult { values: number[]; converged: boolean; } +export function computeCardiologySciReconstruction(data: number[], opts: CardiologySciReconstructionOptions = {}): CardiologySciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciReconstruction }; diff --git a/src/cardiology_sci/registration.ts b/src/cardiology_sci/registration.ts new file mode 100644 index 000000000..31b22a568 --- /dev/null +++ b/src/cardiology_sci/registration.ts @@ -0,0 +1,14 @@ +/** cardiology_sci registration module — tsb analytics library. */ +export interface CardiologySciRegistrationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciRegistrationResult { values: number[]; converged: boolean; } +export function computeCardiologySciRegistration(data: number[], opts: CardiologySciRegistrationOptions = {}): CardiologySciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciRegistration }; diff --git a/src/cardiology_sci/regression.ts b/src/cardiology_sci/regression.ts new file mode 100644 index 000000000..c8f70b420 --- /dev/null +++ b/src/cardiology_sci/regression.ts @@ -0,0 +1,14 @@ +/** cardiology_sci regression module — tsb analytics library. */ +export interface CardiologySciRegressionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciRegressionResult { values: number[]; converged: boolean; } +export function computeCardiologySciRegression(data: number[], opts: CardiologySciRegressionOptions = {}): CardiologySciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciRegression }; diff --git a/src/cardiology_sci/regularization.ts b/src/cardiology_sci/regularization.ts new file mode 100644 index 000000000..2b933f296 --- /dev/null +++ b/src/cardiology_sci/regularization.ts @@ -0,0 +1,14 @@ +/** cardiology_sci regularization module — tsb analytics library. */ +export interface CardiologySciRegularizationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciRegularizationResult { values: number[]; converged: boolean; } +export function computeCardiologySciRegularization(data: number[], opts: CardiologySciRegularizationOptions = {}): CardiologySciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciRegularization }; diff --git a/src/cardiology_sci/robustness.ts b/src/cardiology_sci/robustness.ts new file mode 100644 index 000000000..88b4feb13 --- /dev/null +++ b/src/cardiology_sci/robustness.ts @@ -0,0 +1,14 @@ +/** cardiology_sci robustness module — tsb analytics library. */ +export interface CardiologySciRobustnessOptions { tol?: number; maxIter?: number; } +export interface CardiologySciRobustnessResult { values: number[]; converged: boolean; } +export function computeCardiologySciRobustness(data: number[], opts: CardiologySciRobustnessOptions = {}): CardiologySciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciRobustness }; diff --git a/src/cardiology_sci/sampling.ts b/src/cardiology_sci/sampling.ts new file mode 100644 index 000000000..ef90c4c2c --- /dev/null +++ b/src/cardiology_sci/sampling.ts @@ -0,0 +1,14 @@ +/** cardiology_sci sampling module — tsb analytics library. */ +export interface CardiologySciSamplingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSamplingResult { values: number[]; converged: boolean; } +export function computeCardiologySciSampling(data: number[], opts: CardiologySciSamplingOptions = {}): CardiologySciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSampling }; diff --git a/src/cardiology_sci/sampling2.ts b/src/cardiology_sci/sampling2.ts new file mode 100644 index 000000000..fa6db4a04 --- /dev/null +++ b/src/cardiology_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** cardiology_sci sampling2 module — tsb analytics library. */ +export interface CardiologySciSamplingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSamplingResult { values: number[]; converged: boolean; } +export function computeCardiologySciSampling(data: number[], opts: CardiologySciSamplingOptions = {}): CardiologySciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSampling }; diff --git a/src/cardiology_sci/scaling.ts b/src/cardiology_sci/scaling.ts new file mode 100644 index 000000000..15bc2aa9d --- /dev/null +++ b/src/cardiology_sci/scaling.ts @@ -0,0 +1,14 @@ +/** cardiology_sci scaling module — tsb analytics library. */ +export interface CardiologySciScalingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciScalingResult { values: number[]; converged: boolean; } +export function computeCardiologySciScaling(data: number[], opts: CardiologySciScalingOptions = {}): CardiologySciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciScaling }; diff --git a/src/cardiology_sci/scoring.ts b/src/cardiology_sci/scoring.ts new file mode 100644 index 000000000..5d91717b0 --- /dev/null +++ b/src/cardiology_sci/scoring.ts @@ -0,0 +1,14 @@ +/** cardiology_sci scoring module — tsb analytics library. */ +export interface CardiologySciScoringOptions { tol?: number; maxIter?: number; } +export interface CardiologySciScoringResult { values: number[]; converged: boolean; } +export function computeCardiologySciScoring(data: number[], opts: CardiologySciScoringOptions = {}): CardiologySciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciScoring }; diff --git a/src/cardiology_sci/segmentation.ts b/src/cardiology_sci/segmentation.ts new file mode 100644 index 000000000..ce9615303 --- /dev/null +++ b/src/cardiology_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci segmentation module — tsb analytics library. */ +export interface CardiologySciSegmentationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSegmentationResult { values: number[]; converged: boolean; } +export function computeCardiologySciSegmentation(data: number[], opts: CardiologySciSegmentationOptions = {}): CardiologySciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSegmentation }; diff --git a/src/cardiology_sci/selection.ts b/src/cardiology_sci/selection.ts new file mode 100644 index 000000000..b9b62991e --- /dev/null +++ b/src/cardiology_sci/selection.ts @@ -0,0 +1,14 @@ +/** cardiology_sci selection module — tsb analytics library. */ +export interface CardiologySciSelectionOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSelectionResult { values: number[]; converged: boolean; } +export function computeCardiologySciSelection(data: number[], opts: CardiologySciSelectionOptions = {}): CardiologySciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSelection }; diff --git a/src/cardiology_sci/sensitivity.ts b/src/cardiology_sci/sensitivity.ts new file mode 100644 index 000000000..0fa7f25ee --- /dev/null +++ b/src/cardiology_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** cardiology_sci sensitivity module — tsb analytics library. */ +export interface CardiologySciSensitivityOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSensitivityResult { values: number[]; converged: boolean; } +export function computeCardiologySciSensitivity(data: number[], opts: CardiologySciSensitivityOptions = {}): CardiologySciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSensitivity }; diff --git a/src/cardiology_sci/simulation.ts b/src/cardiology_sci/simulation.ts new file mode 100644 index 000000000..376760a28 --- /dev/null +++ b/src/cardiology_sci/simulation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci simulation module — tsb analytics library. */ +export interface CardiologySciSimulationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSimulationResult { values: number[]; converged: boolean; } +export function computeCardiologySciSimulation(data: number[], opts: CardiologySciSimulationOptions = {}): CardiologySciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSimulation }; diff --git a/src/cardiology_sci/smoothing.ts b/src/cardiology_sci/smoothing.ts new file mode 100644 index 000000000..b0e512a27 --- /dev/null +++ b/src/cardiology_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** cardiology_sci smoothing module — tsb analytics library. */ +export interface CardiologySciSmoothingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSmoothingResult { values: number[]; converged: boolean; } +export function computeCardiologySciSmoothing(data: number[], opts: CardiologySciSmoothingOptions = {}): CardiologySciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSmoothing }; diff --git a/src/cardiology_sci/stability.ts b/src/cardiology_sci/stability.ts new file mode 100644 index 000000000..dca9a8471 --- /dev/null +++ b/src/cardiology_sci/stability.ts @@ -0,0 +1,14 @@ +/** cardiology_sci stability module — tsb analytics library. */ +export interface CardiologySciStabilityOptions { tol?: number; maxIter?: number; } +export interface CardiologySciStabilityResult { values: number[]; converged: boolean; } +export function computeCardiologySciStability(data: number[], opts: CardiologySciStabilityOptions = {}): CardiologySciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciStability }; diff --git a/src/cardiology_sci/stacking.ts b/src/cardiology_sci/stacking.ts new file mode 100644 index 000000000..2e9bcf4e2 --- /dev/null +++ b/src/cardiology_sci/stacking.ts @@ -0,0 +1,14 @@ +/** cardiology_sci stacking module — tsb analytics library. */ +export interface CardiologySciStackingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciStackingResult { values: number[]; converged: boolean; } +export function computeCardiologySciStacking(data: number[], opts: CardiologySciStackingOptions = {}): CardiologySciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciStacking }; diff --git a/src/cardiology_sci/standardization.ts b/src/cardiology_sci/standardization.ts new file mode 100644 index 000000000..de2cae83a --- /dev/null +++ b/src/cardiology_sci/standardization.ts @@ -0,0 +1,14 @@ +/** cardiology_sci standardization module — tsb analytics library. */ +export interface CardiologySciStandardizationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciStandardizationResult { values: number[]; converged: boolean; } +export function computeCardiologySciStandardization(data: number[], opts: CardiologySciStandardizationOptions = {}): CardiologySciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciStandardization }; diff --git a/src/cardiology_sci/static.ts b/src/cardiology_sci/static.ts new file mode 100644 index 000000000..a1326b24f --- /dev/null +++ b/src/cardiology_sci/static.ts @@ -0,0 +1,14 @@ +/** cardiology_sci static module — tsb analytics library. */ +export interface CardiologySciStaticOptions { tol?: number; maxIter?: number; } +export interface CardiologySciStaticResult { values: number[]; converged: boolean; } +export function computeCardiologySciStatic(data: number[], opts: CardiologySciStaticOptions = {}): CardiologySciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciStatic }; diff --git a/src/cardiology_sci/stochastic.ts b/src/cardiology_sci/stochastic.ts new file mode 100644 index 000000000..03045cdb0 --- /dev/null +++ b/src/cardiology_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** cardiology_sci stochastic module — tsb analytics library. */ +export interface CardiologySciStochasticOptions { tol?: number; maxIter?: number; } +export interface CardiologySciStochasticResult { values: number[]; converged: boolean; } +export function computeCardiologySciStochastic(data: number[], opts: CardiologySciStochasticOptions = {}): CardiologySciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciStochastic }; diff --git a/src/cardiology_sci/synthesis.ts b/src/cardiology_sci/synthesis.ts new file mode 100644 index 000000000..df8753d3d --- /dev/null +++ b/src/cardiology_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** cardiology_sci synthesis module — tsb analytics library. */ +export interface CardiologySciSynthesisOptions { tol?: number; maxIter?: number; } +export interface CardiologySciSynthesisResult { values: number[]; converged: boolean; } +export function computeCardiologySciSynthesis(data: number[], opts: CardiologySciSynthesisOptions = {}): CardiologySciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciSynthesis }; diff --git a/src/cardiology_sci/topology.ts b/src/cardiology_sci/topology.ts new file mode 100644 index 000000000..ada1bbcaa --- /dev/null +++ b/src/cardiology_sci/topology.ts @@ -0,0 +1,14 @@ +/** cardiology_sci topology module — tsb analytics library. */ +export interface CardiologySciTopologyOptions { tol?: number; maxIter?: number; } +export interface CardiologySciTopologyResult { values: number[]; converged: boolean; } +export function computeCardiologySciTopology(data: number[], opts: CardiologySciTopologyOptions = {}): CardiologySciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciTopology }; diff --git a/src/cardiology_sci/tracking.ts b/src/cardiology_sci/tracking.ts new file mode 100644 index 000000000..67705ac11 --- /dev/null +++ b/src/cardiology_sci/tracking.ts @@ -0,0 +1,14 @@ +/** cardiology_sci tracking module — tsb analytics library. */ +export interface CardiologySciTrackingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciTrackingResult { values: number[]; converged: boolean; } +export function computeCardiologySciTracking(data: number[], opts: CardiologySciTrackingOptions = {}): CardiologySciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciTracking }; diff --git a/src/cardiology_sci/transform.ts b/src/cardiology_sci/transform.ts new file mode 100644 index 000000000..c4d9cbd0e --- /dev/null +++ b/src/cardiology_sci/transform.ts @@ -0,0 +1,14 @@ +/** cardiology_sci transform module — tsb analytics library. */ +export interface CardiologySciTransformOptions { tol?: number; maxIter?: number; } +export interface CardiologySciTransformResult { values: number[]; converged: boolean; } +export function computeCardiologySciTransform(data: number[], opts: CardiologySciTransformOptions = {}): CardiologySciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciTransform }; diff --git a/src/cardiology_sci/uncertainty.ts b/src/cardiology_sci/uncertainty.ts new file mode 100644 index 000000000..5befd27d1 --- /dev/null +++ b/src/cardiology_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** cardiology_sci uncertainty module — tsb analytics library. */ +export interface CardiologySciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface CardiologySciUncertaintyResult { values: number[]; converged: boolean; } +export function computeCardiologySciUncertainty(data: number[], opts: CardiologySciUncertaintyOptions = {}): CardiologySciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciUncertainty }; diff --git a/src/cardiology_sci/validation.ts b/src/cardiology_sci/validation.ts new file mode 100644 index 000000000..fb9e73f67 --- /dev/null +++ b/src/cardiology_sci/validation.ts @@ -0,0 +1,14 @@ +/** cardiology_sci validation module — tsb analytics library. */ +export interface CardiologySciValidationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciValidationResult { values: number[]; converged: boolean; } +export function computeCardiologySciValidation(data: number[], opts: CardiologySciValidationOptions = {}): CardiologySciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciValidation }; diff --git a/src/cardiology_sci/verification.ts b/src/cardiology_sci/verification.ts new file mode 100644 index 000000000..f2e6e47f5 --- /dev/null +++ b/src/cardiology_sci/verification.ts @@ -0,0 +1,14 @@ +/** cardiology_sci verification module — tsb analytics library. */ +export interface CardiologySciVerificationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciVerificationResult { values: number[]; converged: boolean; } +export function computeCardiologySciVerification(data: number[], opts: CardiologySciVerificationOptions = {}): CardiologySciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciVerification }; diff --git a/src/cardiology_sci/visualization.ts b/src/cardiology_sci/visualization.ts new file mode 100644 index 000000000..ea4059d3d --- /dev/null +++ b/src/cardiology_sci/visualization.ts @@ -0,0 +1,14 @@ +/** cardiology_sci visualization module — tsb analytics library. */ +export interface CardiologySciVisualizationOptions { tol?: number; maxIter?: number; } +export interface CardiologySciVisualizationResult { values: number[]; converged: boolean; } +export function computeCardiologySciVisualization(data: number[], opts: CardiologySciVisualizationOptions = {}): CardiologySciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciVisualization }; diff --git a/src/cardiology_sci/voting.ts b/src/cardiology_sci/voting.ts new file mode 100644 index 000000000..efb6b1540 --- /dev/null +++ b/src/cardiology_sci/voting.ts @@ -0,0 +1,14 @@ +/** cardiology_sci voting module — tsb analytics library. */ +export interface CardiologySciVotingOptions { tol?: number; maxIter?: number; } +export interface CardiologySciVotingResult { values: number[]; converged: boolean; } +export function computeCardiologySciVoting(data: number[], opts: CardiologySciVotingOptions = {}): CardiologySciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciVoting }; diff --git a/src/cardiology_sci/wavelet.ts b/src/cardiology_sci/wavelet.ts new file mode 100644 index 000000000..e1597859a --- /dev/null +++ b/src/cardiology_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** cardiology_sci wavelet module — tsb analytics library. */ +export interface CardiologySciWaveletOptions { tol?: number; maxIter?: number; } +export interface CardiologySciWaveletResult { values: number[]; converged: boolean; } +export function computeCardiologySciWavelet(data: number[], opts: CardiologySciWaveletOptions = {}): CardiologySciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCardiologySciWavelet }; diff --git a/src/causal/advanced.ts b/src/causal/advanced.ts new file mode 100644 index 000000000..b3b35768c --- /dev/null +++ b/src/causal/advanced.ts @@ -0,0 +1,15 @@ +/** Causal Advanced module — tsb analytics library. */ +export interface Causal advancedOptions { tol?: number; maxIter?: number; } +export interface Causal advancedResult { values: number[]; converged: boolean; } +export function computeCausal advanced(data: number[], opts: Causal advancedOptions = {}): Causal advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal advanced }; diff --git a/src/causal/backdoor.ts b/src/causal/backdoor.ts new file mode 100644 index 000000000..f5cdae4e1 --- /dev/null +++ b/src/causal/backdoor.ts @@ -0,0 +1,22 @@ +/** Backdoor module — tsb analytics library. */ + +/** Options for Backdoor. */ +export interface BackdoorOptions { tol?: number; maxIter?: number; } + +/** Result from Backdoor. */ +export interface BackdoorResult { values: number[]; converged: boolean; } + +/** Compute Backdoor. */ +export function computeBackdoor(data: number[], opts: BackdoorOptions = {}): BackdoorResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeBackdoor }; diff --git a/src/causal/base2.ts b/src/causal/base2.ts new file mode 100644 index 000000000..6d3286408 --- /dev/null +++ b/src/causal/base2.ts @@ -0,0 +1,15 @@ +/** Causal Base2 module — tsb analytics library. */ +export interface Causal base2Options { tol?: number; maxIter?: number; } +export interface Causal base2Result { values: number[]; converged: boolean; } +export function computeCausal base2(data: number[], opts: Causal base2Options = {}): Causal base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal base2 }; diff --git a/src/causal/batch.ts b/src/causal/batch.ts new file mode 100644 index 000000000..5feaef175 --- /dev/null +++ b/src/causal/batch.ts @@ -0,0 +1,15 @@ +/** Causal Batch module — tsb analytics library. */ +export interface Causal batchOptions { tol?: number; maxIter?: number; } +export interface Causal batchResult { values: number[]; converged: boolean; } +export function computeCausal batch(data: number[], opts: Causal batchOptions = {}): Causal batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal batch }; diff --git a/src/causal/beta.ts b/src/causal/beta.ts new file mode 100644 index 000000000..1329a8f53 --- /dev/null +++ b/src/causal/beta.ts @@ -0,0 +1,15 @@ +/** Causal Beta module — tsb analytics library. */ +export interface Causal betaOptions { tol?: number; maxIter?: number; } +export interface Causal betaResult { values: number[]; converged: boolean; } +export function computeCausal beta(data: number[], opts: Causal betaOptions = {}): Causal betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal beta }; diff --git a/src/causal/comparative_case_study.ts b/src/causal/comparative_case_study.ts new file mode 100644 index 000000000..fc58a4eaa --- /dev/null +++ b/src/causal/comparative_case_study.ts @@ -0,0 +1,22 @@ +/** Comparative Case Study module — tsb analytics library. */ + +/** Options for Comparative Case Study. */ +export interface ComparativeCaseStudyOptions { tol?: number; maxIter?: number; } + +/** Result from Comparative Case Study. */ +export interface ComparativeCaseStudyResult { values: number[]; converged: boolean; } + +/** Compute Comparative Case Study. */ +export function computeComparativeCaseStudy(data: number[], opts: ComparativeCaseStudyOptions = {}): ComparativeCaseStudyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeComparativeCaseStudy }; diff --git a/src/causal/confounding.ts b/src/causal/confounding.ts new file mode 100644 index 000000000..4115bd4dd --- /dev/null +++ b/src/causal/confounding.ts @@ -0,0 +1,22 @@ +/** Confounding module — tsb analytics library. */ + +/** Options for Confounding. */ +export interface ConfoundingOptions { tol?: number; maxIter?: number; } + +/** Result from Confounding. */ +export interface ConfoundingResult { values: number[]; converged: boolean; } + +/** Compute Confounding. */ +export function computeConfounding(data: number[], opts: ConfoundingOptions = {}): ConfoundingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeConfounding }; diff --git a/src/causal/counterfactual.ts b/src/causal/counterfactual.ts new file mode 100644 index 000000000..697fd8ceb --- /dev/null +++ b/src/causal/counterfactual.ts @@ -0,0 +1,22 @@ +/** Counterfactual module — tsb analytics library. */ + +/** Options for Counterfactual. */ +export interface CounterfactualOptions { tol?: number; maxIter?: number; } + +/** Result from Counterfactual. */ +export interface CounterfactualResult { values: number[]; converged: boolean; } + +/** Compute Counterfactual. */ +export function computeCounterfactual(data: number[], opts: CounterfactualOptions = {}): CounterfactualResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCounterfactual }; diff --git a/src/causal/cpu.ts b/src/causal/cpu.ts new file mode 100644 index 000000000..901c0bcaf --- /dev/null +++ b/src/causal/cpu.ts @@ -0,0 +1,15 @@ +/** Causal Cpu module — tsb analytics library. */ +export interface Causal cpuOptions { tol?: number; maxIter?: number; } +export interface Causal cpuResult { values: number[]; converged: boolean; } +export function computeCausal cpu(data: number[], opts: Causal cpuOptions = {}): Causal cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal cpu }; diff --git a/src/causal/dag.ts b/src/causal/dag.ts new file mode 100644 index 000000000..b7c5cf435 --- /dev/null +++ b/src/causal/dag.ts @@ -0,0 +1,22 @@ +/** Dag module — tsb analytics library. */ + +/** Options for Dag. */ +export interface DagOptions { tol?: number; maxIter?: number; } + +/** Result from Dag. */ +export interface DagResult { values: number[]; converged: boolean; } + +/** Compute Dag. */ +export function computeDag(data: number[], opts: DagOptions = {}): DagResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDag }; diff --git a/src/causal/dense.ts b/src/causal/dense.ts new file mode 100644 index 000000000..60e3c8c30 --- /dev/null +++ b/src/causal/dense.ts @@ -0,0 +1,15 @@ +/** Causal Dense module — tsb analytics library. */ +export interface Causal denseOptions { tol?: number; maxIter?: number; } +export interface Causal denseResult { values: number[]; converged: boolean; } +export function computeCausal dense(data: number[], opts: Causal denseOptions = {}): Causal denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal dense }; diff --git a/src/causal/did.ts b/src/causal/did.ts new file mode 100644 index 000000000..53b4b8c9b --- /dev/null +++ b/src/causal/did.ts @@ -0,0 +1,22 @@ +/** Did module — tsb analytics library. */ + +/** Options for Did. */ +export interface DidOptions { tol?: number; maxIter?: number; } + +/** Result from Did. */ +export interface DidResult { values: number[]; converged: boolean; } + +/** Compute Did. */ +export function computeDid(data: number[], opts: DidOptions = {}): DidResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDid }; diff --git a/src/causal/distributed.ts b/src/causal/distributed.ts new file mode 100644 index 000000000..bdd5167b4 --- /dev/null +++ b/src/causal/distributed.ts @@ -0,0 +1,15 @@ +/** Causal Distributed module — tsb analytics library. */ +export interface Causal distributedOptions { tol?: number; maxIter?: number; } +export interface Causal distributedResult { values: number[]; converged: boolean; } +export function computeCausal distributed(data: number[], opts: Causal distributedOptions = {}): Causal distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal distributed }; diff --git a/src/causal/distributional.ts b/src/causal/distributional.ts new file mode 100644 index 000000000..0d9945bd8 --- /dev/null +++ b/src/causal/distributional.ts @@ -0,0 +1,22 @@ +/** Distributional module — tsb analytics library. */ + +/** Options for Distributional. */ +export interface DistributionalOptions { tol?: number; maxIter?: number; } + +/** Result from Distributional. */ +export interface DistributionalResult { values: number[]; converged: boolean; } + +/** Compute Distributional. */ +export function computeDistributional(data: number[], opts: DistributionalOptions = {}): DistributionalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDistributional }; diff --git a/src/causal/do_calculus.ts b/src/causal/do_calculus.ts new file mode 100644 index 000000000..d8f314f47 --- /dev/null +++ b/src/causal/do_calculus.ts @@ -0,0 +1,22 @@ +/** Do Calculus module — tsb analytics library. */ + +/** Options for Do Calculus. */ +export interface DoCalculusOptions { tol?: number; maxIter?: number; } + +/** Result from Do Calculus. */ +export interface DoCalculusResult { values: number[]; converged: boolean; } + +/** Compute Do Calculus. */ +export function computeDoCalculus(data: number[], opts: DoCalculusOptions = {}): DoCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeDoCalculus }; diff --git a/src/causal/experimental.ts b/src/causal/experimental.ts new file mode 100644 index 000000000..7fe5c8741 --- /dev/null +++ b/src/causal/experimental.ts @@ -0,0 +1,15 @@ +/** Causal Experimental module — tsb analytics library. */ +export interface Causal experimentalOptions { tol?: number; maxIter?: number; } +export interface Causal experimentalResult { values: number[]; converged: boolean; } +export function computeCausal experimental(data: number[], opts: Causal experimentalOptions = {}): Causal experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal experimental }; diff --git a/src/causal/falsification.ts b/src/causal/falsification.ts new file mode 100644 index 000000000..de10ea44e --- /dev/null +++ b/src/causal/falsification.ts @@ -0,0 +1,22 @@ +/** Falsification module — tsb analytics library. */ + +/** Options for Falsification. */ +export interface FalsificationOptions { tol?: number; maxIter?: number; } + +/** Result from Falsification. */ +export interface FalsificationResult { values: number[]; converged: boolean; } + +/** Compute Falsification. */ +export function computeFalsification(data: number[], opts: FalsificationOptions = {}): FalsificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFalsification }; diff --git a/src/causal/fast.ts b/src/causal/fast.ts new file mode 100644 index 000000000..3f7ac9644 --- /dev/null +++ b/src/causal/fast.ts @@ -0,0 +1,15 @@ +/** Causal Fast module — tsb analytics library. */ +export interface Causal fastOptions { tol?: number; maxIter?: number; } +export interface Causal fastResult { values: number[]; converged: boolean; } +export function computeCausal fast(data: number[], opts: Causal fastOptions = {}): Causal fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal fast }; diff --git a/src/causal/frontdoor.ts b/src/causal/frontdoor.ts new file mode 100644 index 000000000..4325e0d5b --- /dev/null +++ b/src/causal/frontdoor.ts @@ -0,0 +1,22 @@ +/** Frontdoor module — tsb analytics library. */ + +/** Options for Frontdoor. */ +export interface FrontdoorOptions { tol?: number; maxIter?: number; } + +/** Result from Frontdoor. */ +export interface FrontdoorResult { values: number[]; converged: boolean; } + +/** Compute Frontdoor. */ +export function computeFrontdoor(data: number[], opts: FrontdoorOptions = {}): FrontdoorResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFrontdoor }; diff --git a/src/causal/future.ts b/src/causal/future.ts new file mode 100644 index 000000000..9bf54012b --- /dev/null +++ b/src/causal/future.ts @@ -0,0 +1,15 @@ +/** Causal Future module — tsb analytics library. */ +export interface Causal futureOptions { tol?: number; maxIter?: number; } +export interface Causal futureResult { values: number[]; converged: boolean; } +export function computeCausal future(data: number[], opts: Causal futureOptions = {}): Causal futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal future }; diff --git a/src/causal/gpu.ts b/src/causal/gpu.ts new file mode 100644 index 000000000..93c6aef5f --- /dev/null +++ b/src/causal/gpu.ts @@ -0,0 +1,15 @@ +/** Causal Gpu module — tsb analytics library. */ +export interface Causal gpuOptions { tol?: number; maxIter?: number; } +export interface Causal gpuResult { values: number[]; converged: boolean; } +export function computeCausal gpu(data: number[], opts: Causal gpuOptions = {}): Causal gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal gpu }; diff --git a/src/causal/heterogeneous_treatment.ts b/src/causal/heterogeneous_treatment.ts new file mode 100644 index 000000000..2aedb9fdc --- /dev/null +++ b/src/causal/heterogeneous_treatment.ts @@ -0,0 +1,22 @@ +/** Heterogeneous Treatment module — tsb analytics library. */ + +/** Options for Heterogeneous Treatment. */ +export interface HeterogeneousTreatmentOptions { tol?: number; maxIter?: number; } + +/** Result from Heterogeneous Treatment. */ +export interface HeterogeneousTreatmentResult { values: number[]; converged: boolean; } + +/** Compute Heterogeneous Treatment. */ +export function computeHeterogeneousTreatment(data: number[], opts: HeterogeneousTreatmentOptions = {}): HeterogeneousTreatmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeHeterogeneousTreatment }; diff --git a/src/causal/identification.ts b/src/causal/identification.ts new file mode 100644 index 000000000..e3e0be607 --- /dev/null +++ b/src/causal/identification.ts @@ -0,0 +1,22 @@ +/** Identification module — tsb analytics library. */ + +/** Options for Identification. */ +export interface IdentificationOptions { tol?: number; maxIter?: number; } + +/** Result from Identification. */ +export interface IdentificationResult { values: number[]; converged: boolean; } + +/** Compute Identification. */ +export function computeIdentification(data: number[], opts: IdentificationOptions = {}): IdentificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeIdentification }; diff --git a/src/causal/interrupted_time_series.ts b/src/causal/interrupted_time_series.ts new file mode 100644 index 000000000..678349ee2 --- /dev/null +++ b/src/causal/interrupted_time_series.ts @@ -0,0 +1,22 @@ +/** Interrupted Time Series module — tsb analytics library. */ + +/** Options for Interrupted Time Series. */ +export interface InterruptedTimeSeriesOptions { tol?: number; maxIter?: number; } + +/** Result from Interrupted Time Series. */ +export interface InterruptedTimeSeriesResult { values: number[]; converged: boolean; } + +/** Compute Interrupted Time Series. */ +export function computeInterruptedTimeSeries(data: number[], opts: InterruptedTimeSeriesOptions = {}): InterruptedTimeSeriesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeInterruptedTimeSeries }; diff --git a/src/causal/iv.ts b/src/causal/iv.ts new file mode 100644 index 000000000..1b756ecd0 --- /dev/null +++ b/src/causal/iv.ts @@ -0,0 +1,22 @@ +/** Iv module — tsb analytics library. */ + +/** Options for Iv. */ +export interface IvOptions { tol?: number; maxIter?: number; } + +/** Result from Iv. */ +export interface IvResult { values: number[]; converged: boolean; } + +/** Compute Iv. */ +export function computeIv(data: number[], opts: IvOptions = {}): IvResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeIv }; diff --git a/src/causal/large.ts b/src/causal/large.ts new file mode 100644 index 000000000..dd4f8d128 --- /dev/null +++ b/src/causal/large.ts @@ -0,0 +1,15 @@ +/** Causal Large module — tsb analytics library. */ +export interface Causal largeOptions { tol?: number; maxIter?: number; } +export interface Causal largeResult { values: number[]; converged: boolean; } +export function computeCausal large(data: number[], opts: Causal largeOptions = {}): Causal largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal large }; diff --git a/src/causal/legacy.ts b/src/causal/legacy.ts new file mode 100644 index 000000000..57a21bb32 --- /dev/null +++ b/src/causal/legacy.ts @@ -0,0 +1,15 @@ +/** Causal Legacy module — tsb analytics library. */ +export interface Causal legacyOptions { tol?: number; maxIter?: number; } +export interface Causal legacyResult { values: number[]; converged: boolean; } +export function computeCausal legacy(data: number[], opts: Causal legacyOptions = {}): Causal legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal legacy }; diff --git a/src/causal/lite.ts b/src/causal/lite.ts new file mode 100644 index 000000000..a6307bc10 --- /dev/null +++ b/src/causal/lite.ts @@ -0,0 +1,15 @@ +/** Causal Lite module — tsb analytics library. */ +export interface Causal liteOptions { tol?: number; maxIter?: number; } +export interface Causal liteResult { values: number[]; converged: boolean; } +export function computeCausal lite(data: number[], opts: Causal liteOptions = {}): Causal liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal lite }; diff --git a/src/causal/local_average_treatment.ts b/src/causal/local_average_treatment.ts new file mode 100644 index 000000000..08bf5644a --- /dev/null +++ b/src/causal/local_average_treatment.ts @@ -0,0 +1,22 @@ +/** Local Average Treatment module — tsb analytics library. */ + +/** Options for Local Average Treatment. */ +export interface LocalAverageTreatmentOptions { tol?: number; maxIter?: number; } + +/** Result from Local Average Treatment. */ +export interface LocalAverageTreatmentResult { values: number[]; converged: boolean; } + +/** Compute Local Average Treatment. */ +export function computeLocalAverageTreatment(data: number[], opts: LocalAverageTreatmentOptions = {}): LocalAverageTreatmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeLocalAverageTreatment }; diff --git a/src/causal/marginal_treatment.ts b/src/causal/marginal_treatment.ts new file mode 100644 index 000000000..023fd5c26 --- /dev/null +++ b/src/causal/marginal_treatment.ts @@ -0,0 +1,22 @@ +/** Marginal Treatment module — tsb analytics library. */ + +/** Options for Marginal Treatment. */ +export interface MarginalTreatmentOptions { tol?: number; maxIter?: number; } + +/** Result from Marginal Treatment. */ +export interface MarginalTreatmentResult { values: number[]; converged: boolean; } + +/** Compute Marginal Treatment. */ +export function computeMarginalTreatment(data: number[], opts: MarginalTreatmentOptions = {}): MarginalTreatmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMarginalTreatment }; diff --git a/src/causal/matching.ts b/src/causal/matching.ts new file mode 100644 index 000000000..c60f8d3e0 --- /dev/null +++ b/src/causal/matching.ts @@ -0,0 +1,22 @@ +/** Matching module — tsb analytics library. */ + +/** Options for Matching. */ +export interface MatchingOptions { tol?: number; maxIter?: number; } + +/** Result from Matching. */ +export interface MatchingResult { values: number[]; converged: boolean; } + +/** Compute Matching. */ +export function computeMatching(data: number[], opts: MatchingOptions = {}): MatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMatching }; diff --git a/src/causal/mechanism.ts b/src/causal/mechanism.ts new file mode 100644 index 000000000..7e52ea2f2 --- /dev/null +++ b/src/causal/mechanism.ts @@ -0,0 +1,22 @@ +/** Mechanism module — tsb analytics library. */ + +/** Options for Mechanism. */ +export interface MechanismOptions { tol?: number; maxIter?: number; } + +/** Result from Mechanism. */ +export interface MechanismResult { values: number[]; converged: boolean; } + +/** Compute Mechanism. */ +export function computeMechanism(data: number[], opts: MechanismOptions = {}): MechanismResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMechanism }; diff --git a/src/causal/mediation.ts b/src/causal/mediation.ts new file mode 100644 index 000000000..b29549384 --- /dev/null +++ b/src/causal/mediation.ts @@ -0,0 +1,22 @@ +/** Mediation module — tsb analytics library. */ + +/** Options for Mediation. */ +export interface MediationOptions { tol?: number; maxIter?: number; } + +/** Result from Mediation. */ +export interface MediationResult { values: number[]; converged: boolean; } + +/** Compute Mediation. */ +export function computeMediation(data: number[], opts: MediationOptions = {}): MediationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMediation }; diff --git a/src/causal/mini.ts b/src/causal/mini.ts new file mode 100644 index 000000000..d4facbc3b --- /dev/null +++ b/src/causal/mini.ts @@ -0,0 +1,15 @@ +/** Causal Mini module — tsb analytics library. */ +export interface Causal miniOptions { tol?: number; maxIter?: number; } +export interface Causal miniResult { values: number[]; converged: boolean; } +export function computeCausal mini(data: number[], opts: Causal miniOptions = {}): Causal miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal mini }; diff --git a/src/causal/natural_experiment.ts b/src/causal/natural_experiment.ts new file mode 100644 index 000000000..5049d8a7d --- /dev/null +++ b/src/causal/natural_experiment.ts @@ -0,0 +1,22 @@ +/** Natural Experiment module — tsb analytics library. */ + +/** Options for Natural Experiment. */ +export interface NaturalExperimentOptions { tol?: number; maxIter?: number; } + +/** Result from Natural Experiment. */ +export interface NaturalExperimentResult { values: number[]; converged: boolean; } + +/** Compute Natural Experiment. */ +export function computeNaturalExperiment(data: number[], opts: NaturalExperimentOptions = {}): NaturalExperimentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNaturalExperiment }; diff --git a/src/causal/next.ts b/src/causal/next.ts new file mode 100644 index 000000000..73b083703 --- /dev/null +++ b/src/causal/next.ts @@ -0,0 +1,15 @@ +/** Causal Next module — tsb analytics library. */ +export interface Causal nextOptions { tol?: number; maxIter?: number; } +export interface Causal nextResult { values: number[]; converged: boolean; } +export function computeCausal next(data: number[], opts: Causal nextOptions = {}): Causal nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal next }; diff --git a/src/causal/online.ts b/src/causal/online.ts new file mode 100644 index 000000000..0fb73c786 --- /dev/null +++ b/src/causal/online.ts @@ -0,0 +1,15 @@ +/** Causal Online module — tsb analytics library. */ +export interface Causal onlineOptions { tol?: number; maxIter?: number; } +export interface Causal onlineResult { values: number[]; converged: boolean; } +export function computeCausal online(data: number[], opts: Causal onlineOptions = {}): Causal onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal online }; diff --git a/src/causal/parallel.ts b/src/causal/parallel.ts new file mode 100644 index 000000000..2994564f7 --- /dev/null +++ b/src/causal/parallel.ts @@ -0,0 +1,15 @@ +/** Causal Parallel module — tsb analytics library. */ +export interface Causal parallelOptions { tol?: number; maxIter?: number; } +export interface Causal parallelResult { values: number[]; converged: boolean; } +export function computeCausal parallel(data: number[], opts: Causal parallelOptions = {}): Causal parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal parallel }; diff --git a/src/causal/placebo.ts b/src/causal/placebo.ts new file mode 100644 index 000000000..3a3da5b77 --- /dev/null +++ b/src/causal/placebo.ts @@ -0,0 +1,22 @@ +/** Placebo module — tsb analytics library. */ + +/** Options for Placebo. */ +export interface PlaceboOptions { tol?: number; maxIter?: number; } + +/** Result from Placebo. */ +export interface PlaceboResult { values: number[]; converged: boolean; } + +/** Compute Placebo. */ +export function computePlacebo(data: number[], opts: PlaceboOptions = {}): PlaceboResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePlacebo }; diff --git a/src/causal/plus.ts b/src/causal/plus.ts new file mode 100644 index 000000000..d2f7cb26a --- /dev/null +++ b/src/causal/plus.ts @@ -0,0 +1,15 @@ +/** Causal Plus module — tsb analytics library. */ +export interface Causal plusOptions { tol?: number; maxIter?: number; } +export interface Causal plusResult { values: number[]; converged: boolean; } +export function computeCausal plus(data: number[], opts: Causal plusOptions = {}): Causal plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal plus }; diff --git a/src/causal/policy.ts b/src/causal/policy.ts new file mode 100644 index 000000000..cf41f468b --- /dev/null +++ b/src/causal/policy.ts @@ -0,0 +1,22 @@ +/** Policy module — tsb analytics library. */ + +/** Options for Policy. */ +export interface PolicyOptions { tol?: number; maxIter?: number; } + +/** Result from Policy. */ +export interface PolicyResult { values: number[]; converged: boolean; } + +/** Compute Policy. */ +export function computePolicy(data: number[], opts: PolicyOptions = {}): PolicyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePolicy }; diff --git a/src/causal/principal_stratification.ts b/src/causal/principal_stratification.ts new file mode 100644 index 000000000..4e7b04fa9 --- /dev/null +++ b/src/causal/principal_stratification.ts @@ -0,0 +1,22 @@ +/** Principal Stratification module — tsb analytics library. */ + +/** Options for Principal Stratification. */ +export interface PrincipalStratificationOptions { tol?: number; maxIter?: number; } + +/** Result from Principal Stratification. */ +export interface PrincipalStratificationResult { values: number[]; converged: boolean; } + +/** Compute Principal Stratification. */ +export function computePrincipalStratification(data: number[], opts: PrincipalStratificationOptions = {}): PrincipalStratificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePrincipalStratification }; diff --git a/src/causal/pro.ts b/src/causal/pro.ts new file mode 100644 index 000000000..74acd9aa0 --- /dev/null +++ b/src/causal/pro.ts @@ -0,0 +1,15 @@ +/** Causal Pro module — tsb analytics library. */ +export interface Causal proOptions { tol?: number; maxIter?: number; } +export interface Causal proResult { values: number[]; converged: boolean; } +export function computeCausal pro(data: number[], opts: Causal proOptions = {}): Causal proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal pro }; diff --git a/src/causal/propensity.ts b/src/causal/propensity.ts new file mode 100644 index 000000000..6fe7a19e1 --- /dev/null +++ b/src/causal/propensity.ts @@ -0,0 +1,22 @@ +/** Propensity module — tsb analytics library. */ + +/** Options for Propensity. */ +export interface PropensityOptions { tol?: number; maxIter?: number; } + +/** Result from Propensity. */ +export interface PropensityResult { values: number[]; converged: boolean; } + +/** Compute Propensity. */ +export function computePropensity(data: number[], opts: PropensityOptions = {}): PropensityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePropensity }; diff --git a/src/causal/quantile_treatment.ts b/src/causal/quantile_treatment.ts new file mode 100644 index 000000000..804212c9d --- /dev/null +++ b/src/causal/quantile_treatment.ts @@ -0,0 +1,22 @@ +/** Quantile Treatment module — tsb analytics library. */ + +/** Options for Quantile Treatment. */ +export interface QuantileTreatmentOptions { tol?: number; maxIter?: number; } + +/** Result from Quantile Treatment. */ +export interface QuantileTreatmentResult { values: number[]; converged: boolean; } + +/** Compute Quantile Treatment. */ +export function computeQuantileTreatment(data: number[], opts: QuantileTreatmentOptions = {}): QuantileTreatmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeQuantileTreatment }; diff --git a/src/causal/rdd.ts b/src/causal/rdd.ts new file mode 100644 index 000000000..c7161ac0b --- /dev/null +++ b/src/causal/rdd.ts @@ -0,0 +1,22 @@ +/** Rdd module — tsb analytics library. */ + +/** Options for Rdd. */ +export interface RddOptions { tol?: number; maxIter?: number; } + +/** Result from Rdd. */ +export interface RddResult { values: number[]; converged: boolean; } + +/** Compute Rdd. */ +export function computeRdd(data: number[], opts: RddOptions = {}): RddResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRdd }; diff --git a/src/causal/regression_discontinuity.ts b/src/causal/regression_discontinuity.ts new file mode 100644 index 000000000..dc526aa9f --- /dev/null +++ b/src/causal/regression_discontinuity.ts @@ -0,0 +1,22 @@ +/** Regression Discontinuity module — tsb analytics library. */ + +/** Options for Regression Discontinuity. */ +export interface RegressionDiscontinuityOptions { tol?: number; maxIter?: number; } + +/** Result from Regression Discontinuity. */ +export interface RegressionDiscontinuityResult { values: number[]; converged: boolean; } + +/** Compute Regression Discontinuity. */ +export function computeRegressionDiscontinuity(data: number[], opts: RegressionDiscontinuityOptions = {}): RegressionDiscontinuityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRegressionDiscontinuity }; diff --git a/src/causal/robust.ts b/src/causal/robust.ts new file mode 100644 index 000000000..48ce0984c --- /dev/null +++ b/src/causal/robust.ts @@ -0,0 +1,15 @@ +/** Causal Robust module — tsb analytics library. */ +export interface Causal robustOptions { tol?: number; maxIter?: number; } +export interface Causal robustResult { values: number[]; converged: boolean; } +export function computeCausal robust(data: number[], opts: Causal robustOptions = {}): Causal robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal robust }; diff --git a/src/causal/sensitivity.ts b/src/causal/sensitivity.ts new file mode 100644 index 000000000..2c021c567 --- /dev/null +++ b/src/causal/sensitivity.ts @@ -0,0 +1,22 @@ +/** Sensitivity module — tsb analytics library. */ + +/** Options for Sensitivity. */ +export interface SensitivityOptions { tol?: number; maxIter?: number; } + +/** Result from Sensitivity. */ +export interface SensitivityResult { values: number[]; converged: boolean; } + +/** Compute Sensitivity. */ +export function computeSensitivity(data: number[], opts: SensitivityOptions = {}): SensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSensitivity }; diff --git a/src/causal/small.ts b/src/causal/small.ts new file mode 100644 index 000000000..0c5d6589a --- /dev/null +++ b/src/causal/small.ts @@ -0,0 +1,15 @@ +/** Causal Small module — tsb analytics library. */ +export interface Causal smallOptions { tol?: number; maxIter?: number; } +export interface Causal smallResult { values: number[]; converged: boolean; } +export function computeCausal small(data: number[], opts: Causal smallOptions = {}): Causal smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal small }; diff --git a/src/causal/sparse.ts b/src/causal/sparse.ts new file mode 100644 index 000000000..b433ee22d --- /dev/null +++ b/src/causal/sparse.ts @@ -0,0 +1,15 @@ +/** Causal Sparse module — tsb analytics library. */ +export interface Causal sparseOptions { tol?: number; maxIter?: number; } +export interface Causal sparseResult { values: number[]; converged: boolean; } +export function computeCausal sparse(data: number[], opts: Causal sparseOptions = {}): Causal sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal sparse }; diff --git a/src/causal/stable.ts b/src/causal/stable.ts new file mode 100644 index 000000000..71d1e254a --- /dev/null +++ b/src/causal/stable.ts @@ -0,0 +1,15 @@ +/** Causal Stable module — tsb analytics library. */ +export interface Causal stableOptions { tol?: number; maxIter?: number; } +export interface Causal stableResult { values: number[]; converged: boolean; } +export function computeCausal stable(data: number[], opts: Causal stableOptions = {}): Causal stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal stable }; diff --git a/src/causal/streaming.ts b/src/causal/streaming.ts new file mode 100644 index 000000000..0d6d25e13 --- /dev/null +++ b/src/causal/streaming.ts @@ -0,0 +1,15 @@ +/** Causal Streaming module — tsb analytics library. */ +export interface Causal streamingOptions { tol?: number; maxIter?: number; } +export interface Causal streamingResult { values: number[]; converged: boolean; } +export function computeCausal streaming(data: number[], opts: Causal streamingOptions = {}): Causal streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal streaming }; diff --git a/src/causal/synthetic_control.ts b/src/causal/synthetic_control.ts new file mode 100644 index 000000000..bc750420f --- /dev/null +++ b/src/causal/synthetic_control.ts @@ -0,0 +1,22 @@ +/** Synthetic Control module — tsb analytics library. */ + +/** Options for Synthetic Control. */ +export interface SyntheticControlOptions { tol?: number; maxIter?: number; } + +/** Result from Synthetic Control. */ +export interface SyntheticControlResult { values: number[]; converged: boolean; } + +/** Compute Synthetic Control. */ +export function computeSyntheticControl(data: number[], opts: SyntheticControlOptions = {}): SyntheticControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSyntheticControl }; diff --git a/src/causal/synthetic_diff.ts b/src/causal/synthetic_diff.ts new file mode 100644 index 000000000..850ef2538 --- /dev/null +++ b/src/causal/synthetic_diff.ts @@ -0,0 +1,22 @@ +/** Synthetic Diff module — tsb analytics library. */ + +/** Options for Synthetic Diff. */ +export interface SyntheticDiffOptions { tol?: number; maxIter?: number; } + +/** Result from Synthetic Diff. */ +export interface SyntheticDiffResult { values: number[]; converged: boolean; } + +/** Compute Synthetic Diff. */ +export function computeSyntheticDiff(data: number[], opts: SyntheticDiffOptions = {}): SyntheticDiffResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSyntheticDiff }; diff --git a/src/causal/v2.ts b/src/causal/v2.ts new file mode 100644 index 000000000..4b15428f4 --- /dev/null +++ b/src/causal/v2.ts @@ -0,0 +1,15 @@ +/** Causal V2 module — tsb analytics library. */ +export interface Causal v2Options { tol?: number; maxIter?: number; } +export interface Causal v2Result { values: number[]; converged: boolean; } +export function computeCausal v2(data: number[], opts: Causal v2Options = {}): Causal v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal v2 }; diff --git a/src/causal/v3.ts b/src/causal/v3.ts new file mode 100644 index 000000000..33a5793a9 --- /dev/null +++ b/src/causal/v3.ts @@ -0,0 +1,15 @@ +/** Causal V3 module — tsb analytics library. */ +export interface Causal v3Options { tol?: number; maxIter?: number; } +export interface Causal v3Result { values: number[]; converged: boolean; } +export function computeCausal v3(data: number[], opts: Causal v3Options = {}): Causal v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal v3 }; diff --git a/src/causal/wasm.ts b/src/causal/wasm.ts new file mode 100644 index 000000000..ebf49ec2b --- /dev/null +++ b/src/causal/wasm.ts @@ -0,0 +1,15 @@ +/** Causal Wasm module — tsb analytics library. */ +export interface Causal wasmOptions { tol?: number; maxIter?: number; } +export interface Causal wasmResult { values: number[]; converged: boolean; } +export function computeCausal wasm(data: number[], opts: Causal wasmOptions = {}): Causal wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal wasm }; diff --git a/src/causal/xlarge.ts b/src/causal/xlarge.ts new file mode 100644 index 000000000..2bcae57ad --- /dev/null +++ b/src/causal/xlarge.ts @@ -0,0 +1,15 @@ +/** Causal Xlarge module — tsb analytics library. */ +export interface Causal xlargeOptions { tol?: number; maxIter?: number; } +export interface Causal xlargeResult { values: number[]; converged: boolean; } +export function computeCausal xlarge(data: number[], opts: Causal xlargeOptions = {}): Causal xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCausal xlarge }; diff --git a/src/cell_bio/adaptation.ts b/src/cell_bio/adaptation.ts new file mode 100644 index 000000000..6a7ab21a5 --- /dev/null +++ b/src/cell_bio/adaptation.ts @@ -0,0 +1,14 @@ +/** cell_bio adaptation module — tsb analytics library. */ +export interface CellBioAdaptationOptions { tol?: number; maxIter?: number; } +export interface CellBioAdaptationResult { values: number[]; converged: boolean; } +export function computeCellBioAdaptation(data: number[], opts: CellBioAdaptationOptions = {}): CellBioAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioAdaptation }; diff --git a/src/cell_bio/aggregation.ts b/src/cell_bio/aggregation.ts new file mode 100644 index 000000000..7ab5932f1 --- /dev/null +++ b/src/cell_bio/aggregation.ts @@ -0,0 +1,14 @@ +/** cell_bio aggregation module — tsb analytics library. */ +export interface CellBioAggregationOptions { tol?: number; maxIter?: number; } +export interface CellBioAggregationResult { values: number[]; converged: boolean; } +export function computeCellBioAggregation(data: number[], opts: CellBioAggregationOptions = {}): CellBioAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioAggregation }; diff --git a/src/cell_bio/algebra.ts b/src/cell_bio/algebra.ts new file mode 100644 index 000000000..46f35d4df --- /dev/null +++ b/src/cell_bio/algebra.ts @@ -0,0 +1,14 @@ +/** cell_bio algebra module — tsb analytics library. */ +export interface CellBioAlgebraOptions { tol?: number; maxIter?: number; } +export interface CellBioAlgebraResult { values: number[]; converged: boolean; } +export function computeCellBioAlgebra(data: number[], opts: CellBioAlgebraOptions = {}): CellBioAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioAlgebra }; diff --git a/src/cell_bio/alignment.ts b/src/cell_bio/alignment.ts new file mode 100644 index 000000000..23b968c6e --- /dev/null +++ b/src/cell_bio/alignment.ts @@ -0,0 +1,14 @@ +/** cell_bio alignment module — tsb analytics library. */ +export interface CellBioAlignmentOptions { tol?: number; maxIter?: number; } +export interface CellBioAlignmentResult { values: number[]; converged: boolean; } +export function computeCellBioAlignment(data: number[], opts: CellBioAlignmentOptions = {}): CellBioAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioAlignment }; diff --git a/src/cell_bio/analysis.ts b/src/cell_bio/analysis.ts new file mode 100644 index 000000000..abb07e0f4 --- /dev/null +++ b/src/cell_bio/analysis.ts @@ -0,0 +1,14 @@ +/** cell_bio analysis module — tsb analytics library. */ +export interface CellBioAnalysisOptions { tol?: number; maxIter?: number; } +export interface CellBioAnalysisResult { values: number[]; converged: boolean; } +export function computeCellBioAnalysis(data: number[], opts: CellBioAnalysisOptions = {}): CellBioAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioAnalysis }; diff --git a/src/cell_bio/augmentation.ts b/src/cell_bio/augmentation.ts new file mode 100644 index 000000000..8783e7df9 --- /dev/null +++ b/src/cell_bio/augmentation.ts @@ -0,0 +1,14 @@ +/** cell_bio augmentation module — tsb analytics library. */ +export interface CellBioAugmentationOptions { tol?: number; maxIter?: number; } +export interface CellBioAugmentationResult { values: number[]; converged: boolean; } +export function computeCellBioAugmentation(data: number[], opts: CellBioAugmentationOptions = {}): CellBioAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioAugmentation }; diff --git a/src/cell_bio/bagging.ts b/src/cell_bio/bagging.ts new file mode 100644 index 000000000..c52cdd87e --- /dev/null +++ b/src/cell_bio/bagging.ts @@ -0,0 +1,14 @@ +/** cell_bio bagging module — tsb analytics library. */ +export interface CellBioBaggingOptions { tol?: number; maxIter?: number; } +export interface CellBioBaggingResult { values: number[]; converged: boolean; } +export function computeCellBioBagging(data: number[], opts: CellBioBaggingOptions = {}): CellBioBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioBagging }; diff --git a/src/cell_bio/basis.ts b/src/cell_bio/basis.ts new file mode 100644 index 000000000..1a9126542 --- /dev/null +++ b/src/cell_bio/basis.ts @@ -0,0 +1,14 @@ +/** cell_bio basis module — tsb analytics library. */ +export interface CellBioBasisOptions { tol?: number; maxIter?: number; } +export interface CellBioBasisResult { values: number[]; converged: boolean; } +export function computeCellBioBasis(data: number[], opts: CellBioBasisOptions = {}): CellBioBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioBasis }; diff --git a/src/cell_bio/benchmarking.ts b/src/cell_bio/benchmarking.ts new file mode 100644 index 000000000..9a4cc6660 --- /dev/null +++ b/src/cell_bio/benchmarking.ts @@ -0,0 +1,14 @@ +/** cell_bio benchmarking module — tsb analytics library. */ +export interface CellBioBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface CellBioBenchmarkingResult { values: number[]; converged: boolean; } +export function computeCellBioBenchmarking(data: number[], opts: CellBioBenchmarkingOptions = {}): CellBioBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioBenchmarking }; diff --git a/src/cell_bio/blending.ts b/src/cell_bio/blending.ts new file mode 100644 index 000000000..b4a9317c7 --- /dev/null +++ b/src/cell_bio/blending.ts @@ -0,0 +1,14 @@ +/** cell_bio blending module — tsb analytics library. */ +export interface CellBioBlendingOptions { tol?: number; maxIter?: number; } +export interface CellBioBlendingResult { values: number[]; converged: boolean; } +export function computeCellBioBlending(data: number[], opts: CellBioBlendingOptions = {}): CellBioBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioBlending }; diff --git a/src/cell_bio/boosting.ts b/src/cell_bio/boosting.ts new file mode 100644 index 000000000..8d2bd275e --- /dev/null +++ b/src/cell_bio/boosting.ts @@ -0,0 +1,14 @@ +/** cell_bio boosting module — tsb analytics library. */ +export interface CellBioBoostingOptions { tol?: number; maxIter?: number; } +export interface CellBioBoostingResult { values: number[]; converged: boolean; } +export function computeCellBioBoosting(data: number[], opts: CellBioBoostingOptions = {}): CellBioBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioBoosting }; diff --git a/src/cell_bio/bootstrap.ts b/src/cell_bio/bootstrap.ts new file mode 100644 index 000000000..a227559b2 --- /dev/null +++ b/src/cell_bio/bootstrap.ts @@ -0,0 +1,14 @@ +/** cell_bio bootstrap module — tsb analytics library. */ +export interface CellBioBootstrapOptions { tol?: number; maxIter?: number; } +export interface CellBioBootstrapResult { values: number[]; converged: boolean; } +export function computeCellBioBootstrap(data: number[], opts: CellBioBootstrapOptions = {}): CellBioBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioBootstrap }; diff --git a/src/cell_bio/calculus.ts b/src/cell_bio/calculus.ts new file mode 100644 index 000000000..653e5e9af --- /dev/null +++ b/src/cell_bio/calculus.ts @@ -0,0 +1,14 @@ +/** cell_bio calculus module — tsb analytics library. */ +export interface CellBioCalculusOptions { tol?: number; maxIter?: number; } +export interface CellBioCalculusResult { values: number[]; converged: boolean; } +export function computeCellBioCalculus(data: number[], opts: CellBioCalculusOptions = {}): CellBioCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCalculus }; diff --git a/src/cell_bio/calibration.ts b/src/cell_bio/calibration.ts new file mode 100644 index 000000000..d4006af5e --- /dev/null +++ b/src/cell_bio/calibration.ts @@ -0,0 +1,14 @@ +/** cell_bio calibration module — tsb analytics library. */ +export interface CellBioCalibrationOptions { tol?: number; maxIter?: number; } +export interface CellBioCalibrationResult { values: number[]; converged: boolean; } +export function computeCellBioCalibration(data: number[], opts: CellBioCalibrationOptions = {}): CellBioCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCalibration }; diff --git a/src/cell_bio/characterization.ts b/src/cell_bio/characterization.ts new file mode 100644 index 000000000..6a7de8429 --- /dev/null +++ b/src/cell_bio/characterization.ts @@ -0,0 +1,14 @@ +/** cell_bio characterization module — tsb analytics library. */ +export interface CellBioCharacterizationOptions { tol?: number; maxIter?: number; } +export interface CellBioCharacterizationResult { values: number[]; converged: boolean; } +export function computeCellBioCharacterization(data: number[], opts: CellBioCharacterizationOptions = {}): CellBioCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCharacterization }; diff --git a/src/cell_bio/classification.ts b/src/cell_bio/classification.ts new file mode 100644 index 000000000..83570ae69 --- /dev/null +++ b/src/cell_bio/classification.ts @@ -0,0 +1,14 @@ +/** cell_bio classification module — tsb analytics library. */ +export interface CellBioClassificationOptions { tol?: number; maxIter?: number; } +export interface CellBioClassificationResult { values: number[]; converged: boolean; } +export function computeCellBioClassification(data: number[], opts: CellBioClassificationOptions = {}): CellBioClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioClassification }; diff --git a/src/cell_bio/clustering.ts b/src/cell_bio/clustering.ts new file mode 100644 index 000000000..292c18b47 --- /dev/null +++ b/src/cell_bio/clustering.ts @@ -0,0 +1,14 @@ +/** cell_bio clustering module — tsb analytics library. */ +export interface CellBioClusteringOptions { tol?: number; maxIter?: number; } +export interface CellBioClusteringResult { values: number[]; converged: boolean; } +export function computeCellBioClustering(data: number[], opts: CellBioClusteringOptions = {}): CellBioClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioClustering }; diff --git a/src/cell_bio/compression.ts b/src/cell_bio/compression.ts new file mode 100644 index 000000000..e3abbe473 --- /dev/null +++ b/src/cell_bio/compression.ts @@ -0,0 +1,14 @@ +/** cell_bio compression module — tsb analytics library. */ +export interface CellBioCompressionOptions { tol?: number; maxIter?: number; } +export interface CellBioCompressionResult { values: number[]; converged: boolean; } +export function computeCellBioCompression(data: number[], opts: CellBioCompressionOptions = {}): CellBioCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCompression }; diff --git a/src/cell_bio/continuous.ts b/src/cell_bio/continuous.ts new file mode 100644 index 000000000..f16c715be --- /dev/null +++ b/src/cell_bio/continuous.ts @@ -0,0 +1,14 @@ +/** cell_bio continuous module — tsb analytics library. */ +export interface CellBioContinuousOptions { tol?: number; maxIter?: number; } +export interface CellBioContinuousResult { values: number[]; converged: boolean; } +export function computeCellBioContinuous(data: number[], opts: CellBioContinuousOptions = {}): CellBioContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioContinuous }; diff --git a/src/cell_bio/control.ts b/src/cell_bio/control.ts new file mode 100644 index 000000000..095250485 --- /dev/null +++ b/src/cell_bio/control.ts @@ -0,0 +1,14 @@ +/** cell_bio control module — tsb analytics library. */ +export interface CellBioControlOptions { tol?: number; maxIter?: number; } +export interface CellBioControlResult { values: number[]; converged: boolean; } +export function computeCellBioControl(data: number[], opts: CellBioControlOptions = {}): CellBioControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioControl }; diff --git a/src/cell_bio/convergence.ts b/src/cell_bio/convergence.ts new file mode 100644 index 000000000..6ba9bff70 --- /dev/null +++ b/src/cell_bio/convergence.ts @@ -0,0 +1,14 @@ +/** cell_bio convergence module — tsb analytics library. */ +export interface CellBioConvergenceOptions { tol?: number; maxIter?: number; } +export interface CellBioConvergenceResult { values: number[]; converged: boolean; } +export function computeCellBioConvergence(data: number[], opts: CellBioConvergenceOptions = {}): CellBioConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioConvergence }; diff --git a/src/cell_bio/convex.ts b/src/cell_bio/convex.ts new file mode 100644 index 000000000..1ffaff935 --- /dev/null +++ b/src/cell_bio/convex.ts @@ -0,0 +1,14 @@ +/** cell_bio convex module — tsb analytics library. */ +export interface CellBioConvexOptions { tol?: number; maxIter?: number; } +export interface CellBioConvexResult { values: number[]; converged: boolean; } +export function computeCellBioConvex(data: number[], opts: CellBioConvexOptions = {}): CellBioConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioConvex }; diff --git a/src/cell_bio/correlation.ts b/src/cell_bio/correlation.ts new file mode 100644 index 000000000..d46bf534f --- /dev/null +++ b/src/cell_bio/correlation.ts @@ -0,0 +1,14 @@ +/** cell_bio correlation module — tsb analytics library. */ +export interface CellBioCorrelationOptions { tol?: number; maxIter?: number; } +export interface CellBioCorrelationResult { values: number[]; converged: boolean; } +export function computeCellBioCorrelation(data: number[], opts: CellBioCorrelationOptions = {}): CellBioCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCorrelation }; diff --git a/src/cell_bio/covariance.ts b/src/cell_bio/covariance.ts new file mode 100644 index 000000000..2c6cb4be7 --- /dev/null +++ b/src/cell_bio/covariance.ts @@ -0,0 +1,14 @@ +/** cell_bio covariance module — tsb analytics library. */ +export interface CellBioCovarianceOptions { tol?: number; maxIter?: number; } +export interface CellBioCovarianceResult { values: number[]; converged: boolean; } +export function computeCellBioCovariance(data: number[], opts: CellBioCovarianceOptions = {}): CellBioCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCovariance }; diff --git a/src/cell_bio/cross_validation.ts b/src/cell_bio/cross_validation.ts new file mode 100644 index 000000000..4770994f8 --- /dev/null +++ b/src/cell_bio/cross_validation.ts @@ -0,0 +1,14 @@ +/** cell_bio cross_validation module — tsb analytics library. */ +export interface CellBioCrossValidationOptions { tol?: number; maxIter?: number; } +export interface CellBioCrossValidationResult { values: number[]; converged: boolean; } +export function computeCellBioCrossValidation(data: number[], opts: CellBioCrossValidationOptions = {}): CellBioCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioCrossValidation }; diff --git a/src/cell_bio/decoding.ts b/src/cell_bio/decoding.ts new file mode 100644 index 000000000..ccd722e68 --- /dev/null +++ b/src/cell_bio/decoding.ts @@ -0,0 +1,14 @@ +/** cell_bio decoding module — tsb analytics library. */ +export interface CellBioDecodingOptions { tol?: number; maxIter?: number; } +export interface CellBioDecodingResult { values: number[]; converged: boolean; } +export function computeCellBioDecoding(data: number[], opts: CellBioDecodingOptions = {}): CellBioDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDecoding }; diff --git a/src/cell_bio/decomposition.ts b/src/cell_bio/decomposition.ts new file mode 100644 index 000000000..66f174361 --- /dev/null +++ b/src/cell_bio/decomposition.ts @@ -0,0 +1,14 @@ +/** cell_bio decomposition module — tsb analytics library. */ +export interface CellBioDecompositionOptions { tol?: number; maxIter?: number; } +export interface CellBioDecompositionResult { values: number[]; converged: boolean; } +export function computeCellBioDecomposition(data: number[], opts: CellBioDecompositionOptions = {}): CellBioDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDecomposition }; diff --git a/src/cell_bio/detection.ts b/src/cell_bio/detection.ts new file mode 100644 index 000000000..3d13d57a4 --- /dev/null +++ b/src/cell_bio/detection.ts @@ -0,0 +1,14 @@ +/** cell_bio detection module — tsb analytics library. */ +export interface CellBioDetectionOptions { tol?: number; maxIter?: number; } +export interface CellBioDetectionResult { values: number[]; converged: boolean; } +export function computeCellBioDetection(data: number[], opts: CellBioDetectionOptions = {}): CellBioDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDetection }; diff --git a/src/cell_bio/deterministic.ts b/src/cell_bio/deterministic.ts new file mode 100644 index 000000000..88aea8ae0 --- /dev/null +++ b/src/cell_bio/deterministic.ts @@ -0,0 +1,14 @@ +/** cell_bio deterministic module — tsb analytics library. */ +export interface CellBioDeterministicOptions { tol?: number; maxIter?: number; } +export interface CellBioDeterministicResult { values: number[]; converged: boolean; } +export function computeCellBioDeterministic(data: number[], opts: CellBioDeterministicOptions = {}): CellBioDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDeterministic }; diff --git a/src/cell_bio/diagnostics.ts b/src/cell_bio/diagnostics.ts new file mode 100644 index 000000000..e0cd57803 --- /dev/null +++ b/src/cell_bio/diagnostics.ts @@ -0,0 +1,14 @@ +/** cell_bio diagnostics module — tsb analytics library. */ +export interface CellBioDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface CellBioDiagnosticsResult { values: number[]; converged: boolean; } +export function computeCellBioDiagnostics(data: number[], opts: CellBioDiagnosticsOptions = {}): CellBioDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDiagnostics }; diff --git a/src/cell_bio/differential.ts b/src/cell_bio/differential.ts new file mode 100644 index 000000000..107fe56f0 --- /dev/null +++ b/src/cell_bio/differential.ts @@ -0,0 +1,14 @@ +/** cell_bio differential module — tsb analytics library. */ +export interface CellBioDifferentialOptions { tol?: number; maxIter?: number; } +export interface CellBioDifferentialResult { values: number[]; converged: boolean; } +export function computeCellBioDifferential(data: number[], opts: CellBioDifferentialOptions = {}): CellBioDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDifferential }; diff --git a/src/cell_bio/discrete.ts b/src/cell_bio/discrete.ts new file mode 100644 index 000000000..9e7e72b0c --- /dev/null +++ b/src/cell_bio/discrete.ts @@ -0,0 +1,14 @@ +/** cell_bio discrete module — tsb analytics library. */ +export interface CellBioDiscreteOptions { tol?: number; maxIter?: number; } +export interface CellBioDiscreteResult { values: number[]; converged: boolean; } +export function computeCellBioDiscrete(data: number[], opts: CellBioDiscreteOptions = {}): CellBioDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDiscrete }; diff --git a/src/cell_bio/distribution.ts b/src/cell_bio/distribution.ts new file mode 100644 index 000000000..5a1ba36b1 --- /dev/null +++ b/src/cell_bio/distribution.ts @@ -0,0 +1,14 @@ +/** cell_bio distribution module — tsb analytics library. */ +export interface CellBioDistributionOptions { tol?: number; maxIter?: number; } +export interface CellBioDistributionResult { values: number[]; converged: boolean; } +export function computeCellBioDistribution(data: number[], opts: CellBioDistributionOptions = {}): CellBioDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDistribution }; diff --git a/src/cell_bio/dynamic.ts b/src/cell_bio/dynamic.ts new file mode 100644 index 000000000..92012213e --- /dev/null +++ b/src/cell_bio/dynamic.ts @@ -0,0 +1,14 @@ +/** cell_bio dynamic module — tsb analytics library. */ +export interface CellBioDynamicOptions { tol?: number; maxIter?: number; } +export interface CellBioDynamicResult { values: number[]; converged: boolean; } +export function computeCellBioDynamic(data: number[], opts: CellBioDynamicOptions = {}): CellBioDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioDynamic }; diff --git a/src/cell_bio/embedding.ts b/src/cell_bio/embedding.ts new file mode 100644 index 000000000..988143459 --- /dev/null +++ b/src/cell_bio/embedding.ts @@ -0,0 +1,14 @@ +/** cell_bio embedding module — tsb analytics library. */ +export interface CellBioEmbeddingOptions { tol?: number; maxIter?: number; } +export interface CellBioEmbeddingResult { values: number[]; converged: boolean; } +export function computeCellBioEmbedding(data: number[], opts: CellBioEmbeddingOptions = {}): CellBioEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioEmbedding }; diff --git a/src/cell_bio/encoding.ts b/src/cell_bio/encoding.ts new file mode 100644 index 000000000..ac8607ca0 --- /dev/null +++ b/src/cell_bio/encoding.ts @@ -0,0 +1,14 @@ +/** cell_bio encoding module — tsb analytics library. */ +export interface CellBioEncodingOptions { tol?: number; maxIter?: number; } +export interface CellBioEncodingResult { values: number[]; converged: boolean; } +export function computeCellBioEncoding(data: number[], opts: CellBioEncodingOptions = {}): CellBioEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioEncoding }; diff --git a/src/cell_bio/ensemble.ts b/src/cell_bio/ensemble.ts new file mode 100644 index 000000000..7f9ed8219 --- /dev/null +++ b/src/cell_bio/ensemble.ts @@ -0,0 +1,14 @@ +/** cell_bio ensemble module — tsb analytics library. */ +export interface CellBioEnsembleOptions { tol?: number; maxIter?: number; } +export interface CellBioEnsembleResult { values: number[]; converged: boolean; } +export function computeCellBioEnsemble(data: number[], opts: CellBioEnsembleOptions = {}): CellBioEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioEnsemble }; diff --git a/src/cell_bio/estimation.ts b/src/cell_bio/estimation.ts new file mode 100644 index 000000000..a44530cb6 --- /dev/null +++ b/src/cell_bio/estimation.ts @@ -0,0 +1,14 @@ +/** cell_bio estimation module — tsb analytics library. */ +export interface CellBioEstimationOptions { tol?: number; maxIter?: number; } +export interface CellBioEstimationResult { values: number[]; converged: boolean; } +export function computeCellBioEstimation(data: number[], opts: CellBioEstimationOptions = {}): CellBioEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioEstimation }; diff --git a/src/cell_bio/evaluation.ts b/src/cell_bio/evaluation.ts new file mode 100644 index 000000000..22c6e2211 --- /dev/null +++ b/src/cell_bio/evaluation.ts @@ -0,0 +1,14 @@ +/** cell_bio evaluation module — tsb analytics library. */ +export interface CellBioEvaluationOptions { tol?: number; maxIter?: number; } +export interface CellBioEvaluationResult { values: number[]; converged: boolean; } +export function computeCellBioEvaluation(data: number[], opts: CellBioEvaluationOptions = {}): CellBioEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioEvaluation }; diff --git a/src/cell_bio/extrapolation.ts b/src/cell_bio/extrapolation.ts new file mode 100644 index 000000000..f771a5453 --- /dev/null +++ b/src/cell_bio/extrapolation.ts @@ -0,0 +1,14 @@ +/** cell_bio extrapolation module — tsb analytics library. */ +export interface CellBioExtrapolationOptions { tol?: number; maxIter?: number; } +export interface CellBioExtrapolationResult { values: number[]; converged: boolean; } +export function computeCellBioExtrapolation(data: number[], opts: CellBioExtrapolationOptions = {}): CellBioExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioExtrapolation }; diff --git a/src/cell_bio/features.ts b/src/cell_bio/features.ts new file mode 100644 index 000000000..f83a5b3a9 --- /dev/null +++ b/src/cell_bio/features.ts @@ -0,0 +1,14 @@ +/** cell_bio features module — tsb analytics library. */ +export interface CellBioFeaturesOptions { tol?: number; maxIter?: number; } +export interface CellBioFeaturesResult { values: number[]; converged: boolean; } +export function computeCellBioFeatures(data: number[], opts: CellBioFeaturesOptions = {}): CellBioFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioFeatures }; diff --git a/src/cell_bio/feedback.ts b/src/cell_bio/feedback.ts new file mode 100644 index 000000000..ec217da27 --- /dev/null +++ b/src/cell_bio/feedback.ts @@ -0,0 +1,14 @@ +/** cell_bio feedback module — tsb analytics library. */ +export interface CellBioFeedbackOptions { tol?: number; maxIter?: number; } +export interface CellBioFeedbackResult { values: number[]; converged: boolean; } +export function computeCellBioFeedback(data: number[], opts: CellBioFeedbackOptions = {}): CellBioFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioFeedback }; diff --git a/src/cell_bio/filtering.ts b/src/cell_bio/filtering.ts new file mode 100644 index 000000000..a6af8eb6c --- /dev/null +++ b/src/cell_bio/filtering.ts @@ -0,0 +1,14 @@ +/** cell_bio filtering module — tsb analytics library. */ +export interface CellBioFilteringOptions { tol?: number; maxIter?: number; } +export interface CellBioFilteringResult { values: number[]; converged: boolean; } +export function computeCellBioFiltering(data: number[], opts: CellBioFilteringOptions = {}): CellBioFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioFiltering }; diff --git a/src/cell_bio/fourier.ts b/src/cell_bio/fourier.ts new file mode 100644 index 000000000..ae06c366b --- /dev/null +++ b/src/cell_bio/fourier.ts @@ -0,0 +1,14 @@ +/** cell_bio fourier module — tsb analytics library. */ +export interface CellBioFourierOptions { tol?: number; maxIter?: number; } +export interface CellBioFourierResult { values: number[]; converged: boolean; } +export function computeCellBioFourier(data: number[], opts: CellBioFourierOptions = {}): CellBioFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioFourier }; diff --git a/src/cell_bio/fusion.ts b/src/cell_bio/fusion.ts new file mode 100644 index 000000000..5c7218ca8 --- /dev/null +++ b/src/cell_bio/fusion.ts @@ -0,0 +1,14 @@ +/** cell_bio fusion module — tsb analytics library. */ +export interface CellBioFusionOptions { tol?: number; maxIter?: number; } +export interface CellBioFusionResult { values: number[]; converged: boolean; } +export function computeCellBioFusion(data: number[], opts: CellBioFusionOptions = {}): CellBioFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioFusion }; diff --git a/src/cell_bio/generation.ts b/src/cell_bio/generation.ts new file mode 100644 index 000000000..877355abb --- /dev/null +++ b/src/cell_bio/generation.ts @@ -0,0 +1,14 @@ +/** cell_bio generation module — tsb analytics library. */ +export interface CellBioGenerationOptions { tol?: number; maxIter?: number; } +export interface CellBioGenerationResult { values: number[]; converged: boolean; } +export function computeCellBioGeneration(data: number[], opts: CellBioGenerationOptions = {}): CellBioGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioGeneration }; diff --git a/src/cell_bio/geometry.ts b/src/cell_bio/geometry.ts new file mode 100644 index 000000000..a5ce6c3a6 --- /dev/null +++ b/src/cell_bio/geometry.ts @@ -0,0 +1,14 @@ +/** cell_bio geometry module — tsb analytics library. */ +export interface CellBioGeometryOptions { tol?: number; maxIter?: number; } +export interface CellBioGeometryResult { values: number[]; converged: boolean; } +export function computeCellBioGeometry(data: number[], opts: CellBioGeometryOptions = {}): CellBioGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioGeometry }; diff --git a/src/cell_bio/gradient.ts b/src/cell_bio/gradient.ts new file mode 100644 index 000000000..a9b4eedd1 --- /dev/null +++ b/src/cell_bio/gradient.ts @@ -0,0 +1,14 @@ +/** cell_bio gradient module — tsb analytics library. */ +export interface CellBioGradientOptions { tol?: number; maxIter?: number; } +export interface CellBioGradientResult { values: number[]; converged: boolean; } +export function computeCellBioGradient(data: number[], opts: CellBioGradientOptions = {}): CellBioGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioGradient }; diff --git a/src/cell_bio/hessian.ts b/src/cell_bio/hessian.ts new file mode 100644 index 000000000..216539911 --- /dev/null +++ b/src/cell_bio/hessian.ts @@ -0,0 +1,14 @@ +/** cell_bio hessian module — tsb analytics library. */ +export interface CellBioHessianOptions { tol?: number; maxIter?: number; } +export interface CellBioHessianResult { values: number[]; converged: boolean; } +export function computeCellBioHessian(data: number[], opts: CellBioHessianOptions = {}): CellBioHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioHessian }; diff --git a/src/cell_bio/hypothesis.ts b/src/cell_bio/hypothesis.ts new file mode 100644 index 000000000..5423a2ab2 --- /dev/null +++ b/src/cell_bio/hypothesis.ts @@ -0,0 +1,14 @@ +/** cell_bio hypothesis module — tsb analytics library. */ +export interface CellBioHypothesisOptions { tol?: number; maxIter?: number; } +export interface CellBioHypothesisResult { values: number[]; converged: boolean; } +export function computeCellBioHypothesis(data: number[], opts: CellBioHypothesisOptions = {}): CellBioHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioHypothesis }; diff --git a/src/cell_bio/inference.ts b/src/cell_bio/inference.ts new file mode 100644 index 000000000..3b5f7b65a --- /dev/null +++ b/src/cell_bio/inference.ts @@ -0,0 +1,14 @@ +/** cell_bio inference module — tsb analytics library. */ +export interface CellBioInferenceOptions { tol?: number; maxIter?: number; } +export interface CellBioInferenceResult { values: number[]; converged: boolean; } +export function computeCellBioInference(data: number[], opts: CellBioInferenceOptions = {}): CellBioInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioInference }; diff --git a/src/cell_bio/inference2.ts b/src/cell_bio/inference2.ts new file mode 100644 index 000000000..9e95099ad --- /dev/null +++ b/src/cell_bio/inference2.ts @@ -0,0 +1,14 @@ +/** cell_bio inference2 module — tsb analytics library. */ +export interface CellBioInferenceOptions { tol?: number; maxIter?: number; } +export interface CellBioInferenceResult { values: number[]; converged: boolean; } +export function computeCellBioInference(data: number[], opts: CellBioInferenceOptions = {}): CellBioInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioInference }; diff --git a/src/cell_bio/integral.ts b/src/cell_bio/integral.ts new file mode 100644 index 000000000..e030420d3 --- /dev/null +++ b/src/cell_bio/integral.ts @@ -0,0 +1,14 @@ +/** cell_bio integral module — tsb analytics library. */ +export interface CellBioIntegralOptions { tol?: number; maxIter?: number; } +export interface CellBioIntegralResult { values: number[]; converged: boolean; } +export function computeCellBioIntegral(data: number[], opts: CellBioIntegralOptions = {}): CellBioIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioIntegral }; diff --git a/src/cell_bio/integration.ts b/src/cell_bio/integration.ts new file mode 100644 index 000000000..e4f63ea58 --- /dev/null +++ b/src/cell_bio/integration.ts @@ -0,0 +1,14 @@ +/** cell_bio integration module — tsb analytics library. */ +export interface CellBioIntegrationOptions { tol?: number; maxIter?: number; } +export interface CellBioIntegrationResult { values: number[]; converged: boolean; } +export function computeCellBioIntegration(data: number[], opts: CellBioIntegrationOptions = {}): CellBioIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioIntegration }; diff --git a/src/cell_bio/interpolation.ts b/src/cell_bio/interpolation.ts new file mode 100644 index 000000000..2cef223ab --- /dev/null +++ b/src/cell_bio/interpolation.ts @@ -0,0 +1,14 @@ +/** cell_bio interpolation module — tsb analytics library. */ +export interface CellBioInterpolationOptions { tol?: number; maxIter?: number; } +export interface CellBioInterpolationResult { values: number[]; converged: boolean; } +export function computeCellBioInterpolation(data: number[], opts: CellBioInterpolationOptions = {}): CellBioInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioInterpolation }; diff --git a/src/cell_bio/jacobian.ts b/src/cell_bio/jacobian.ts new file mode 100644 index 000000000..8b0d383b3 --- /dev/null +++ b/src/cell_bio/jacobian.ts @@ -0,0 +1,14 @@ +/** cell_bio jacobian module — tsb analytics library. */ +export interface CellBioJacobianOptions { tol?: number; maxIter?: number; } +export interface CellBioJacobianResult { values: number[]; converged: boolean; } +export function computeCellBioJacobian(data: number[], opts: CellBioJacobianOptions = {}): CellBioJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioJacobian }; diff --git a/src/cell_bio/kernel.ts b/src/cell_bio/kernel.ts new file mode 100644 index 000000000..7aba67c2a --- /dev/null +++ b/src/cell_bio/kernel.ts @@ -0,0 +1,14 @@ +/** cell_bio kernel module — tsb analytics library. */ +export interface CellBioKernelOptions { tol?: number; maxIter?: number; } +export interface CellBioKernelResult { values: number[]; converged: boolean; } +export function computeCellBioKernel(data: number[], opts: CellBioKernelOptions = {}): CellBioKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioKernel }; diff --git a/src/cell_bio/laplacian.ts b/src/cell_bio/laplacian.ts new file mode 100644 index 000000000..3ff3ba618 --- /dev/null +++ b/src/cell_bio/laplacian.ts @@ -0,0 +1,14 @@ +/** cell_bio laplacian module — tsb analytics library. */ +export interface CellBioLaplacianOptions { tol?: number; maxIter?: number; } +export interface CellBioLaplacianResult { values: number[]; converged: boolean; } +export function computeCellBioLaplacian(data: number[], opts: CellBioLaplacianOptions = {}): CellBioLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioLaplacian }; diff --git a/src/cell_bio/learning.ts b/src/cell_bio/learning.ts new file mode 100644 index 000000000..3a217e7a2 --- /dev/null +++ b/src/cell_bio/learning.ts @@ -0,0 +1,14 @@ +/** cell_bio learning module — tsb analytics library. */ +export interface CellBioLearningOptions { tol?: number; maxIter?: number; } +export interface CellBioLearningResult { values: number[]; converged: boolean; } +export function computeCellBioLearning(data: number[], opts: CellBioLearningOptions = {}): CellBioLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioLearning }; diff --git a/src/cell_bio/linear.ts b/src/cell_bio/linear.ts new file mode 100644 index 000000000..884a599fd --- /dev/null +++ b/src/cell_bio/linear.ts @@ -0,0 +1,14 @@ +/** cell_bio linear module — tsb analytics library. */ +export interface CellBioLinearOptions { tol?: number; maxIter?: number; } +export interface CellBioLinearResult { values: number[]; converged: boolean; } +export function computeCellBioLinear(data: number[], opts: CellBioLinearOptions = {}): CellBioLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioLinear }; diff --git a/src/cell_bio/manifold.ts b/src/cell_bio/manifold.ts new file mode 100644 index 000000000..780bbe3fb --- /dev/null +++ b/src/cell_bio/manifold.ts @@ -0,0 +1,14 @@ +/** cell_bio manifold module — tsb analytics library. */ +export interface CellBioManifoldOptions { tol?: number; maxIter?: number; } +export interface CellBioManifoldResult { values: number[]; converged: boolean; } +export function computeCellBioManifold(data: number[], opts: CellBioManifoldOptions = {}): CellBioManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioManifold }; diff --git a/src/cell_bio/matching.ts b/src/cell_bio/matching.ts new file mode 100644 index 000000000..bad4695db --- /dev/null +++ b/src/cell_bio/matching.ts @@ -0,0 +1,14 @@ +/** cell_bio matching module — tsb analytics library. */ +export interface CellBioMatchingOptions { tol?: number; maxIter?: number; } +export interface CellBioMatchingResult { values: number[]; converged: boolean; } +export function computeCellBioMatching(data: number[], opts: CellBioMatchingOptions = {}): CellBioMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioMatching }; diff --git a/src/cell_bio/measurement.ts b/src/cell_bio/measurement.ts new file mode 100644 index 000000000..8e887f671 --- /dev/null +++ b/src/cell_bio/measurement.ts @@ -0,0 +1,14 @@ +/** cell_bio measurement module — tsb analytics library. */ +export interface CellBioMeasurementOptions { tol?: number; maxIter?: number; } +export interface CellBioMeasurementResult { values: number[]; converged: boolean; } +export function computeCellBioMeasurement(data: number[], opts: CellBioMeasurementOptions = {}): CellBioMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioMeasurement }; diff --git a/src/cell_bio/metrics.ts b/src/cell_bio/metrics.ts new file mode 100644 index 000000000..7960fa5c7 --- /dev/null +++ b/src/cell_bio/metrics.ts @@ -0,0 +1,14 @@ +/** cell_bio metrics module — tsb analytics library. */ +export interface CellBioMetricsOptions { tol?: number; maxIter?: number; } +export interface CellBioMetricsResult { values: number[]; converged: boolean; } +export function computeCellBioMetrics(data: number[], opts: CellBioMetricsOptions = {}): CellBioMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioMetrics }; diff --git a/src/cell_bio/modeling.ts b/src/cell_bio/modeling.ts new file mode 100644 index 000000000..52a25d365 --- /dev/null +++ b/src/cell_bio/modeling.ts @@ -0,0 +1,14 @@ +/** cell_bio modeling module — tsb analytics library. */ +export interface CellBioModelingOptions { tol?: number; maxIter?: number; } +export interface CellBioModelingResult { values: number[]; converged: boolean; } +export function computeCellBioModeling(data: number[], opts: CellBioModelingOptions = {}): CellBioModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioModeling }; diff --git a/src/cell_bio/monitoring.ts b/src/cell_bio/monitoring.ts new file mode 100644 index 000000000..f009b051d --- /dev/null +++ b/src/cell_bio/monitoring.ts @@ -0,0 +1,14 @@ +/** cell_bio monitoring module — tsb analytics library. */ +export interface CellBioMonitoringOptions { tol?: number; maxIter?: number; } +export interface CellBioMonitoringResult { values: number[]; converged: boolean; } +export function computeCellBioMonitoring(data: number[], opts: CellBioMonitoringOptions = {}): CellBioMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioMonitoring }; diff --git a/src/cell_bio/nonlinear.ts b/src/cell_bio/nonlinear.ts new file mode 100644 index 000000000..5da183cd4 --- /dev/null +++ b/src/cell_bio/nonlinear.ts @@ -0,0 +1,14 @@ +/** cell_bio nonlinear module — tsb analytics library. */ +export interface CellBioNonlinearOptions { tol?: number; maxIter?: number; } +export interface CellBioNonlinearResult { values: number[]; converged: boolean; } +export function computeCellBioNonlinear(data: number[], opts: CellBioNonlinearOptions = {}): CellBioNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioNonlinear }; diff --git a/src/cell_bio/normalization.ts b/src/cell_bio/normalization.ts new file mode 100644 index 000000000..d2064899d --- /dev/null +++ b/src/cell_bio/normalization.ts @@ -0,0 +1,14 @@ +/** cell_bio normalization module — tsb analytics library. */ +export interface CellBioNormalizationOptions { tol?: number; maxIter?: number; } +export interface CellBioNormalizationResult { values: number[]; converged: boolean; } +export function computeCellBioNormalization(data: number[], opts: CellBioNormalizationOptions = {}): CellBioNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioNormalization }; diff --git a/src/cell_bio/optimization.ts b/src/cell_bio/optimization.ts new file mode 100644 index 000000000..aa51815ea --- /dev/null +++ b/src/cell_bio/optimization.ts @@ -0,0 +1,14 @@ +/** cell_bio optimization module — tsb analytics library. */ +export interface CellBioOptimizationOptions { tol?: number; maxIter?: number; } +export interface CellBioOptimizationResult { values: number[]; converged: boolean; } +export function computeCellBioOptimization(data: number[], opts: CellBioOptimizationOptions = {}): CellBioOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioOptimization }; diff --git a/src/cell_bio/patterns.ts b/src/cell_bio/patterns.ts new file mode 100644 index 000000000..f0befd345 --- /dev/null +++ b/src/cell_bio/patterns.ts @@ -0,0 +1,14 @@ +/** cell_bio patterns module — tsb analytics library. */ +export interface CellBioPatternsOptions { tol?: number; maxIter?: number; } +export interface CellBioPatternsResult { values: number[]; converged: boolean; } +export function computeCellBioPatterns(data: number[], opts: CellBioPatternsOptions = {}): CellBioPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioPatterns }; diff --git a/src/cell_bio/permutation.ts b/src/cell_bio/permutation.ts new file mode 100644 index 000000000..7f5bd91d5 --- /dev/null +++ b/src/cell_bio/permutation.ts @@ -0,0 +1,14 @@ +/** cell_bio permutation module — tsb analytics library. */ +export interface CellBioPermutationOptions { tol?: number; maxIter?: number; } +export interface CellBioPermutationResult { values: number[]; converged: boolean; } +export function computeCellBioPermutation(data: number[], opts: CellBioPermutationOptions = {}): CellBioPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioPermutation }; diff --git a/src/cell_bio/prediction.ts b/src/cell_bio/prediction.ts new file mode 100644 index 000000000..e2e3651e6 --- /dev/null +++ b/src/cell_bio/prediction.ts @@ -0,0 +1,14 @@ +/** cell_bio prediction module — tsb analytics library. */ +export interface CellBioPredictionOptions { tol?: number; maxIter?: number; } +export interface CellBioPredictionResult { values: number[]; converged: boolean; } +export function computeCellBioPrediction(data: number[], opts: CellBioPredictionOptions = {}): CellBioPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioPrediction }; diff --git a/src/cell_bio/processing.ts b/src/cell_bio/processing.ts new file mode 100644 index 000000000..ddc7f5f10 --- /dev/null +++ b/src/cell_bio/processing.ts @@ -0,0 +1,14 @@ +/** cell_bio processing module — tsb analytics library. */ +export interface CellBioProcessingOptions { tol?: number; maxIter?: number; } +export interface CellBioProcessingResult { values: number[]; converged: boolean; } +export function computeCellBioProcessing(data: number[], opts: CellBioProcessingOptions = {}): CellBioProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioProcessing }; diff --git a/src/cell_bio/profiling.ts b/src/cell_bio/profiling.ts new file mode 100644 index 000000000..637c0d631 --- /dev/null +++ b/src/cell_bio/profiling.ts @@ -0,0 +1,14 @@ +/** cell_bio profiling module — tsb analytics library. */ +export interface CellBioProfilingOptions { tol?: number; maxIter?: number; } +export interface CellBioProfilingResult { values: number[]; converged: boolean; } +export function computeCellBioProfiling(data: number[], opts: CellBioProfilingOptions = {}): CellBioProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioProfiling }; diff --git a/src/cell_bio/projection.ts b/src/cell_bio/projection.ts new file mode 100644 index 000000000..b9f2358b3 --- /dev/null +++ b/src/cell_bio/projection.ts @@ -0,0 +1,14 @@ +/** cell_bio projection module — tsb analytics library. */ +export interface CellBioProjectionOptions { tol?: number; maxIter?: number; } +export interface CellBioProjectionResult { values: number[]; converged: boolean; } +export function computeCellBioProjection(data: number[], opts: CellBioProjectionOptions = {}): CellBioProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioProjection }; diff --git a/src/cell_bio/ranking.ts b/src/cell_bio/ranking.ts new file mode 100644 index 000000000..8b71caabe --- /dev/null +++ b/src/cell_bio/ranking.ts @@ -0,0 +1,14 @@ +/** cell_bio ranking module — tsb analytics library. */ +export interface CellBioRankingOptions { tol?: number; maxIter?: number; } +export interface CellBioRankingResult { values: number[]; converged: boolean; } +export function computeCellBioRanking(data: number[], opts: CellBioRankingOptions = {}): CellBioRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioRanking }; diff --git a/src/cell_bio/reconstruction.ts b/src/cell_bio/reconstruction.ts new file mode 100644 index 000000000..755290c91 --- /dev/null +++ b/src/cell_bio/reconstruction.ts @@ -0,0 +1,14 @@ +/** cell_bio reconstruction module — tsb analytics library. */ +export interface CellBioReconstructionOptions { tol?: number; maxIter?: number; } +export interface CellBioReconstructionResult { values: number[]; converged: boolean; } +export function computeCellBioReconstruction(data: number[], opts: CellBioReconstructionOptions = {}): CellBioReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioReconstruction }; diff --git a/src/cell_bio/registration.ts b/src/cell_bio/registration.ts new file mode 100644 index 000000000..284556b20 --- /dev/null +++ b/src/cell_bio/registration.ts @@ -0,0 +1,14 @@ +/** cell_bio registration module — tsb analytics library. */ +export interface CellBioRegistrationOptions { tol?: number; maxIter?: number; } +export interface CellBioRegistrationResult { values: number[]; converged: boolean; } +export function computeCellBioRegistration(data: number[], opts: CellBioRegistrationOptions = {}): CellBioRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioRegistration }; diff --git a/src/cell_bio/regression.ts b/src/cell_bio/regression.ts new file mode 100644 index 000000000..a67a7bb5b --- /dev/null +++ b/src/cell_bio/regression.ts @@ -0,0 +1,14 @@ +/** cell_bio regression module — tsb analytics library. */ +export interface CellBioRegressionOptions { tol?: number; maxIter?: number; } +export interface CellBioRegressionResult { values: number[]; converged: boolean; } +export function computeCellBioRegression(data: number[], opts: CellBioRegressionOptions = {}): CellBioRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioRegression }; diff --git a/src/cell_bio/regularization.ts b/src/cell_bio/regularization.ts new file mode 100644 index 000000000..410d09027 --- /dev/null +++ b/src/cell_bio/regularization.ts @@ -0,0 +1,14 @@ +/** cell_bio regularization module — tsb analytics library. */ +export interface CellBioRegularizationOptions { tol?: number; maxIter?: number; } +export interface CellBioRegularizationResult { values: number[]; converged: boolean; } +export function computeCellBioRegularization(data: number[], opts: CellBioRegularizationOptions = {}): CellBioRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioRegularization }; diff --git a/src/cell_bio/robustness.ts b/src/cell_bio/robustness.ts new file mode 100644 index 000000000..42fa9fb5b --- /dev/null +++ b/src/cell_bio/robustness.ts @@ -0,0 +1,14 @@ +/** cell_bio robustness module — tsb analytics library. */ +export interface CellBioRobustnessOptions { tol?: number; maxIter?: number; } +export interface CellBioRobustnessResult { values: number[]; converged: boolean; } +export function computeCellBioRobustness(data: number[], opts: CellBioRobustnessOptions = {}): CellBioRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioRobustness }; diff --git a/src/cell_bio/sampling.ts b/src/cell_bio/sampling.ts new file mode 100644 index 000000000..67243e6a1 --- /dev/null +++ b/src/cell_bio/sampling.ts @@ -0,0 +1,14 @@ +/** cell_bio sampling module — tsb analytics library. */ +export interface CellBioSamplingOptions { tol?: number; maxIter?: number; } +export interface CellBioSamplingResult { values: number[]; converged: boolean; } +export function computeCellBioSampling(data: number[], opts: CellBioSamplingOptions = {}): CellBioSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSampling }; diff --git a/src/cell_bio/sampling2.ts b/src/cell_bio/sampling2.ts new file mode 100644 index 000000000..4a4149ca5 --- /dev/null +++ b/src/cell_bio/sampling2.ts @@ -0,0 +1,14 @@ +/** cell_bio sampling2 module — tsb analytics library. */ +export interface CellBioSamplingOptions { tol?: number; maxIter?: number; } +export interface CellBioSamplingResult { values: number[]; converged: boolean; } +export function computeCellBioSampling(data: number[], opts: CellBioSamplingOptions = {}): CellBioSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSampling }; diff --git a/src/cell_bio/scaling.ts b/src/cell_bio/scaling.ts new file mode 100644 index 000000000..6a7ecdc00 --- /dev/null +++ b/src/cell_bio/scaling.ts @@ -0,0 +1,14 @@ +/** cell_bio scaling module — tsb analytics library. */ +export interface CellBioScalingOptions { tol?: number; maxIter?: number; } +export interface CellBioScalingResult { values: number[]; converged: boolean; } +export function computeCellBioScaling(data: number[], opts: CellBioScalingOptions = {}): CellBioScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioScaling }; diff --git a/src/cell_bio/scoring.ts b/src/cell_bio/scoring.ts new file mode 100644 index 000000000..05200d171 --- /dev/null +++ b/src/cell_bio/scoring.ts @@ -0,0 +1,14 @@ +/** cell_bio scoring module — tsb analytics library. */ +export interface CellBioScoringOptions { tol?: number; maxIter?: number; } +export interface CellBioScoringResult { values: number[]; converged: boolean; } +export function computeCellBioScoring(data: number[], opts: CellBioScoringOptions = {}): CellBioScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioScoring }; diff --git a/src/cell_bio/segmentation.ts b/src/cell_bio/segmentation.ts new file mode 100644 index 000000000..594925703 --- /dev/null +++ b/src/cell_bio/segmentation.ts @@ -0,0 +1,14 @@ +/** cell_bio segmentation module — tsb analytics library. */ +export interface CellBioSegmentationOptions { tol?: number; maxIter?: number; } +export interface CellBioSegmentationResult { values: number[]; converged: boolean; } +export function computeCellBioSegmentation(data: number[], opts: CellBioSegmentationOptions = {}): CellBioSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSegmentation }; diff --git a/src/cell_bio/selection.ts b/src/cell_bio/selection.ts new file mode 100644 index 000000000..b829fef0a --- /dev/null +++ b/src/cell_bio/selection.ts @@ -0,0 +1,14 @@ +/** cell_bio selection module — tsb analytics library. */ +export interface CellBioSelectionOptions { tol?: number; maxIter?: number; } +export interface CellBioSelectionResult { values: number[]; converged: boolean; } +export function computeCellBioSelection(data: number[], opts: CellBioSelectionOptions = {}): CellBioSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSelection }; diff --git a/src/cell_bio/sensitivity.ts b/src/cell_bio/sensitivity.ts new file mode 100644 index 000000000..c6c51a20a --- /dev/null +++ b/src/cell_bio/sensitivity.ts @@ -0,0 +1,14 @@ +/** cell_bio sensitivity module — tsb analytics library. */ +export interface CellBioSensitivityOptions { tol?: number; maxIter?: number; } +export interface CellBioSensitivityResult { values: number[]; converged: boolean; } +export function computeCellBioSensitivity(data: number[], opts: CellBioSensitivityOptions = {}): CellBioSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSensitivity }; diff --git a/src/cell_bio/simulation.ts b/src/cell_bio/simulation.ts new file mode 100644 index 000000000..7d93f401c --- /dev/null +++ b/src/cell_bio/simulation.ts @@ -0,0 +1,14 @@ +/** cell_bio simulation module — tsb analytics library. */ +export interface CellBioSimulationOptions { tol?: number; maxIter?: number; } +export interface CellBioSimulationResult { values: number[]; converged: boolean; } +export function computeCellBioSimulation(data: number[], opts: CellBioSimulationOptions = {}): CellBioSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSimulation }; diff --git a/src/cell_bio/smoothing.ts b/src/cell_bio/smoothing.ts new file mode 100644 index 000000000..07c9d2780 --- /dev/null +++ b/src/cell_bio/smoothing.ts @@ -0,0 +1,14 @@ +/** cell_bio smoothing module — tsb analytics library. */ +export interface CellBioSmoothingOptions { tol?: number; maxIter?: number; } +export interface CellBioSmoothingResult { values: number[]; converged: boolean; } +export function computeCellBioSmoothing(data: number[], opts: CellBioSmoothingOptions = {}): CellBioSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSmoothing }; diff --git a/src/cell_bio/stability.ts b/src/cell_bio/stability.ts new file mode 100644 index 000000000..d853e46a7 --- /dev/null +++ b/src/cell_bio/stability.ts @@ -0,0 +1,14 @@ +/** cell_bio stability module — tsb analytics library. */ +export interface CellBioStabilityOptions { tol?: number; maxIter?: number; } +export interface CellBioStabilityResult { values: number[]; converged: boolean; } +export function computeCellBioStability(data: number[], opts: CellBioStabilityOptions = {}): CellBioStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioStability }; diff --git a/src/cell_bio/stacking.ts b/src/cell_bio/stacking.ts new file mode 100644 index 000000000..4b8ec4055 --- /dev/null +++ b/src/cell_bio/stacking.ts @@ -0,0 +1,14 @@ +/** cell_bio stacking module — tsb analytics library. */ +export interface CellBioStackingOptions { tol?: number; maxIter?: number; } +export interface CellBioStackingResult { values: number[]; converged: boolean; } +export function computeCellBioStacking(data: number[], opts: CellBioStackingOptions = {}): CellBioStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioStacking }; diff --git a/src/cell_bio/standardization.ts b/src/cell_bio/standardization.ts new file mode 100644 index 000000000..f6f80eda5 --- /dev/null +++ b/src/cell_bio/standardization.ts @@ -0,0 +1,14 @@ +/** cell_bio standardization module — tsb analytics library. */ +export interface CellBioStandardizationOptions { tol?: number; maxIter?: number; } +export interface CellBioStandardizationResult { values: number[]; converged: boolean; } +export function computeCellBioStandardization(data: number[], opts: CellBioStandardizationOptions = {}): CellBioStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioStandardization }; diff --git a/src/cell_bio/static.ts b/src/cell_bio/static.ts new file mode 100644 index 000000000..58743df90 --- /dev/null +++ b/src/cell_bio/static.ts @@ -0,0 +1,14 @@ +/** cell_bio static module — tsb analytics library. */ +export interface CellBioStaticOptions { tol?: number; maxIter?: number; } +export interface CellBioStaticResult { values: number[]; converged: boolean; } +export function computeCellBioStatic(data: number[], opts: CellBioStaticOptions = {}): CellBioStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioStatic }; diff --git a/src/cell_bio/stochastic.ts b/src/cell_bio/stochastic.ts new file mode 100644 index 000000000..bee210248 --- /dev/null +++ b/src/cell_bio/stochastic.ts @@ -0,0 +1,14 @@ +/** cell_bio stochastic module — tsb analytics library. */ +export interface CellBioStochasticOptions { tol?: number; maxIter?: number; } +export interface CellBioStochasticResult { values: number[]; converged: boolean; } +export function computeCellBioStochastic(data: number[], opts: CellBioStochasticOptions = {}): CellBioStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioStochastic }; diff --git a/src/cell_bio/synthesis.ts b/src/cell_bio/synthesis.ts new file mode 100644 index 000000000..e81c41890 --- /dev/null +++ b/src/cell_bio/synthesis.ts @@ -0,0 +1,14 @@ +/** cell_bio synthesis module — tsb analytics library. */ +export interface CellBioSynthesisOptions { tol?: number; maxIter?: number; } +export interface CellBioSynthesisResult { values: number[]; converged: boolean; } +export function computeCellBioSynthesis(data: number[], opts: CellBioSynthesisOptions = {}): CellBioSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioSynthesis }; diff --git a/src/cell_bio/topology.ts b/src/cell_bio/topology.ts new file mode 100644 index 000000000..1027cd629 --- /dev/null +++ b/src/cell_bio/topology.ts @@ -0,0 +1,14 @@ +/** cell_bio topology module — tsb analytics library. */ +export interface CellBioTopologyOptions { tol?: number; maxIter?: number; } +export interface CellBioTopologyResult { values: number[]; converged: boolean; } +export function computeCellBioTopology(data: number[], opts: CellBioTopologyOptions = {}): CellBioTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioTopology }; diff --git a/src/cell_bio/tracking.ts b/src/cell_bio/tracking.ts new file mode 100644 index 000000000..dee5009a8 --- /dev/null +++ b/src/cell_bio/tracking.ts @@ -0,0 +1,14 @@ +/** cell_bio tracking module — tsb analytics library. */ +export interface CellBioTrackingOptions { tol?: number; maxIter?: number; } +export interface CellBioTrackingResult { values: number[]; converged: boolean; } +export function computeCellBioTracking(data: number[], opts: CellBioTrackingOptions = {}): CellBioTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioTracking }; diff --git a/src/cell_bio/transform.ts b/src/cell_bio/transform.ts new file mode 100644 index 000000000..ef2813b74 --- /dev/null +++ b/src/cell_bio/transform.ts @@ -0,0 +1,14 @@ +/** cell_bio transform module — tsb analytics library. */ +export interface CellBioTransformOptions { tol?: number; maxIter?: number; } +export interface CellBioTransformResult { values: number[]; converged: boolean; } +export function computeCellBioTransform(data: number[], opts: CellBioTransformOptions = {}): CellBioTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioTransform }; diff --git a/src/cell_bio/uncertainty.ts b/src/cell_bio/uncertainty.ts new file mode 100644 index 000000000..26b62d916 --- /dev/null +++ b/src/cell_bio/uncertainty.ts @@ -0,0 +1,14 @@ +/** cell_bio uncertainty module — tsb analytics library. */ +export interface CellBioUncertaintyOptions { tol?: number; maxIter?: number; } +export interface CellBioUncertaintyResult { values: number[]; converged: boolean; } +export function computeCellBioUncertainty(data: number[], opts: CellBioUncertaintyOptions = {}): CellBioUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioUncertainty }; diff --git a/src/cell_bio/validation.ts b/src/cell_bio/validation.ts new file mode 100644 index 000000000..1bc1df573 --- /dev/null +++ b/src/cell_bio/validation.ts @@ -0,0 +1,14 @@ +/** cell_bio validation module — tsb analytics library. */ +export interface CellBioValidationOptions { tol?: number; maxIter?: number; } +export interface CellBioValidationResult { values: number[]; converged: boolean; } +export function computeCellBioValidation(data: number[], opts: CellBioValidationOptions = {}): CellBioValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioValidation }; diff --git a/src/cell_bio/verification.ts b/src/cell_bio/verification.ts new file mode 100644 index 000000000..d1cb4b571 --- /dev/null +++ b/src/cell_bio/verification.ts @@ -0,0 +1,14 @@ +/** cell_bio verification module — tsb analytics library. */ +export interface CellBioVerificationOptions { tol?: number; maxIter?: number; } +export interface CellBioVerificationResult { values: number[]; converged: boolean; } +export function computeCellBioVerification(data: number[], opts: CellBioVerificationOptions = {}): CellBioVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioVerification }; diff --git a/src/cell_bio/visualization.ts b/src/cell_bio/visualization.ts new file mode 100644 index 000000000..b522bb39e --- /dev/null +++ b/src/cell_bio/visualization.ts @@ -0,0 +1,14 @@ +/** cell_bio visualization module — tsb analytics library. */ +export interface CellBioVisualizationOptions { tol?: number; maxIter?: number; } +export interface CellBioVisualizationResult { values: number[]; converged: boolean; } +export function computeCellBioVisualization(data: number[], opts: CellBioVisualizationOptions = {}): CellBioVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioVisualization }; diff --git a/src/cell_bio/voting.ts b/src/cell_bio/voting.ts new file mode 100644 index 000000000..2955045af --- /dev/null +++ b/src/cell_bio/voting.ts @@ -0,0 +1,14 @@ +/** cell_bio voting module — tsb analytics library. */ +export interface CellBioVotingOptions { tol?: number; maxIter?: number; } +export interface CellBioVotingResult { values: number[]; converged: boolean; } +export function computeCellBioVoting(data: number[], opts: CellBioVotingOptions = {}): CellBioVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioVoting }; diff --git a/src/cell_bio/wavelet.ts b/src/cell_bio/wavelet.ts new file mode 100644 index 000000000..8c44a0e20 --- /dev/null +++ b/src/cell_bio/wavelet.ts @@ -0,0 +1,14 @@ +/** cell_bio wavelet module — tsb analytics library. */ +export interface CellBioWaveletOptions { tol?: number; maxIter?: number; } +export interface CellBioWaveletResult { values: number[]; converged: boolean; } +export function computeCellBioWavelet(data: number[], opts: CellBioWaveletOptions = {}): CellBioWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCellBioWavelet }; diff --git a/src/ceramic_sci/adaptation.ts b/src/ceramic_sci/adaptation.ts new file mode 100644 index 000000000..024ff49d4 --- /dev/null +++ b/src/ceramic_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci adaptation module — tsb analytics library. */ +export interface CeramicSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciAdaptationResult { values: number[]; converged: boolean; } +export function computeCeramicSciAdaptation(data: number[], opts: CeramicSciAdaptationOptions = {}): CeramicSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciAdaptation }; diff --git a/src/ceramic_sci/aggregation.ts b/src/ceramic_sci/aggregation.ts new file mode 100644 index 000000000..801e6683a --- /dev/null +++ b/src/ceramic_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci aggregation module — tsb analytics library. */ +export interface CeramicSciAggregationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciAggregationResult { values: number[]; converged: boolean; } +export function computeCeramicSciAggregation(data: number[], opts: CeramicSciAggregationOptions = {}): CeramicSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciAggregation }; diff --git a/src/ceramic_sci/algebra.ts b/src/ceramic_sci/algebra.ts new file mode 100644 index 000000000..5fccc5af9 --- /dev/null +++ b/src/ceramic_sci/algebra.ts @@ -0,0 +1,14 @@ +/** ceramic_sci algebra module — tsb analytics library. */ +export interface CeramicSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface CeramicSciAlgebraResult { values: number[]; converged: boolean; } +export function computeCeramicSciAlgebra(data: number[], opts: CeramicSciAlgebraOptions = {}): CeramicSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciAlgebra }; diff --git a/src/ceramic_sci/alignment.ts b/src/ceramic_sci/alignment.ts new file mode 100644 index 000000000..0d16b434d --- /dev/null +++ b/src/ceramic_sci/alignment.ts @@ -0,0 +1,14 @@ +/** ceramic_sci alignment module — tsb analytics library. */ +export interface CeramicSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface CeramicSciAlignmentResult { values: number[]; converged: boolean; } +export function computeCeramicSciAlignment(data: number[], opts: CeramicSciAlignmentOptions = {}): CeramicSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciAlignment }; diff --git a/src/ceramic_sci/analysis.ts b/src/ceramic_sci/analysis.ts new file mode 100644 index 000000000..012ff1bb3 --- /dev/null +++ b/src/ceramic_sci/analysis.ts @@ -0,0 +1,14 @@ +/** ceramic_sci analysis module — tsb analytics library. */ +export interface CeramicSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface CeramicSciAnalysisResult { values: number[]; converged: boolean; } +export function computeCeramicSciAnalysis(data: number[], opts: CeramicSciAnalysisOptions = {}): CeramicSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciAnalysis }; diff --git a/src/ceramic_sci/augmentation.ts b/src/ceramic_sci/augmentation.ts new file mode 100644 index 000000000..b9d8a3826 --- /dev/null +++ b/src/ceramic_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci augmentation module — tsb analytics library. */ +export interface CeramicSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciAugmentationResult { values: number[]; converged: boolean; } +export function computeCeramicSciAugmentation(data: number[], opts: CeramicSciAugmentationOptions = {}): CeramicSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciAugmentation }; diff --git a/src/ceramic_sci/bagging.ts b/src/ceramic_sci/bagging.ts new file mode 100644 index 000000000..c9b43bdb6 --- /dev/null +++ b/src/ceramic_sci/bagging.ts @@ -0,0 +1,14 @@ +/** ceramic_sci bagging module — tsb analytics library. */ +export interface CeramicSciBaggingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciBaggingResult { values: number[]; converged: boolean; } +export function computeCeramicSciBagging(data: number[], opts: CeramicSciBaggingOptions = {}): CeramicSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciBagging }; diff --git a/src/ceramic_sci/basis.ts b/src/ceramic_sci/basis.ts new file mode 100644 index 000000000..c7817f837 --- /dev/null +++ b/src/ceramic_sci/basis.ts @@ -0,0 +1,14 @@ +/** ceramic_sci basis module — tsb analytics library. */ +export interface CeramicSciBasisOptions { tol?: number; maxIter?: number; } +export interface CeramicSciBasisResult { values: number[]; converged: boolean; } +export function computeCeramicSciBasis(data: number[], opts: CeramicSciBasisOptions = {}): CeramicSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciBasis }; diff --git a/src/ceramic_sci/benchmarking.ts b/src/ceramic_sci/benchmarking.ts new file mode 100644 index 000000000..dab3de758 --- /dev/null +++ b/src/ceramic_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** ceramic_sci benchmarking module — tsb analytics library. */ +export interface CeramicSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeCeramicSciBenchmarking(data: number[], opts: CeramicSciBenchmarkingOptions = {}): CeramicSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciBenchmarking }; diff --git a/src/ceramic_sci/blending.ts b/src/ceramic_sci/blending.ts new file mode 100644 index 000000000..73e4e5912 --- /dev/null +++ b/src/ceramic_sci/blending.ts @@ -0,0 +1,14 @@ +/** ceramic_sci blending module — tsb analytics library. */ +export interface CeramicSciBlendingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciBlendingResult { values: number[]; converged: boolean; } +export function computeCeramicSciBlending(data: number[], opts: CeramicSciBlendingOptions = {}): CeramicSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciBlending }; diff --git a/src/ceramic_sci/boosting.ts b/src/ceramic_sci/boosting.ts new file mode 100644 index 000000000..45c2058c9 --- /dev/null +++ b/src/ceramic_sci/boosting.ts @@ -0,0 +1,14 @@ +/** ceramic_sci boosting module — tsb analytics library. */ +export interface CeramicSciBoostingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciBoostingResult { values: number[]; converged: boolean; } +export function computeCeramicSciBoosting(data: number[], opts: CeramicSciBoostingOptions = {}): CeramicSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciBoosting }; diff --git a/src/ceramic_sci/bootstrap.ts b/src/ceramic_sci/bootstrap.ts new file mode 100644 index 000000000..0fc496926 --- /dev/null +++ b/src/ceramic_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** ceramic_sci bootstrap module — tsb analytics library. */ +export interface CeramicSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface CeramicSciBootstrapResult { values: number[]; converged: boolean; } +export function computeCeramicSciBootstrap(data: number[], opts: CeramicSciBootstrapOptions = {}): CeramicSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciBootstrap }; diff --git a/src/ceramic_sci/calculus.ts b/src/ceramic_sci/calculus.ts new file mode 100644 index 000000000..5a1ccbf47 --- /dev/null +++ b/src/ceramic_sci/calculus.ts @@ -0,0 +1,14 @@ +/** ceramic_sci calculus module — tsb analytics library. */ +export interface CeramicSciCalculusOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCalculusResult { values: number[]; converged: boolean; } +export function computeCeramicSciCalculus(data: number[], opts: CeramicSciCalculusOptions = {}): CeramicSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCalculus }; diff --git a/src/ceramic_sci/calibration.ts b/src/ceramic_sci/calibration.ts new file mode 100644 index 000000000..fdcc23003 --- /dev/null +++ b/src/ceramic_sci/calibration.ts @@ -0,0 +1,14 @@ +/** ceramic_sci calibration module — tsb analytics library. */ +export interface CeramicSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCalibrationResult { values: number[]; converged: boolean; } +export function computeCeramicSciCalibration(data: number[], opts: CeramicSciCalibrationOptions = {}): CeramicSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCalibration }; diff --git a/src/ceramic_sci/characterization.ts b/src/ceramic_sci/characterization.ts new file mode 100644 index 000000000..fdc998fd1 --- /dev/null +++ b/src/ceramic_sci/characterization.ts @@ -0,0 +1,14 @@ +/** ceramic_sci characterization module — tsb analytics library. */ +export interface CeramicSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeCeramicSciCharacterization(data: number[], opts: CeramicSciCharacterizationOptions = {}): CeramicSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCharacterization }; diff --git a/src/ceramic_sci/classification.ts b/src/ceramic_sci/classification.ts new file mode 100644 index 000000000..7e8771127 --- /dev/null +++ b/src/ceramic_sci/classification.ts @@ -0,0 +1,14 @@ +/** ceramic_sci classification module — tsb analytics library. */ +export interface CeramicSciClassificationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciClassificationResult { values: number[]; converged: boolean; } +export function computeCeramicSciClassification(data: number[], opts: CeramicSciClassificationOptions = {}): CeramicSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciClassification }; diff --git a/src/ceramic_sci/clustering.ts b/src/ceramic_sci/clustering.ts new file mode 100644 index 000000000..575519e42 --- /dev/null +++ b/src/ceramic_sci/clustering.ts @@ -0,0 +1,14 @@ +/** ceramic_sci clustering module — tsb analytics library. */ +export interface CeramicSciClusteringOptions { tol?: number; maxIter?: number; } +export interface CeramicSciClusteringResult { values: number[]; converged: boolean; } +export function computeCeramicSciClustering(data: number[], opts: CeramicSciClusteringOptions = {}): CeramicSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciClustering }; diff --git a/src/ceramic_sci/compression.ts b/src/ceramic_sci/compression.ts new file mode 100644 index 000000000..0aa000f9c --- /dev/null +++ b/src/ceramic_sci/compression.ts @@ -0,0 +1,14 @@ +/** ceramic_sci compression module — tsb analytics library. */ +export interface CeramicSciCompressionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCompressionResult { values: number[]; converged: boolean; } +export function computeCeramicSciCompression(data: number[], opts: CeramicSciCompressionOptions = {}): CeramicSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCompression }; diff --git a/src/ceramic_sci/continuous.ts b/src/ceramic_sci/continuous.ts new file mode 100644 index 000000000..17f9ebb47 --- /dev/null +++ b/src/ceramic_sci/continuous.ts @@ -0,0 +1,14 @@ +/** ceramic_sci continuous module — tsb analytics library. */ +export interface CeramicSciContinuousOptions { tol?: number; maxIter?: number; } +export interface CeramicSciContinuousResult { values: number[]; converged: boolean; } +export function computeCeramicSciContinuous(data: number[], opts: CeramicSciContinuousOptions = {}): CeramicSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciContinuous }; diff --git a/src/ceramic_sci/control.ts b/src/ceramic_sci/control.ts new file mode 100644 index 000000000..60347b944 --- /dev/null +++ b/src/ceramic_sci/control.ts @@ -0,0 +1,14 @@ +/** ceramic_sci control module — tsb analytics library. */ +export interface CeramicSciControlOptions { tol?: number; maxIter?: number; } +export interface CeramicSciControlResult { values: number[]; converged: boolean; } +export function computeCeramicSciControl(data: number[], opts: CeramicSciControlOptions = {}): CeramicSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciControl }; diff --git a/src/ceramic_sci/convergence.ts b/src/ceramic_sci/convergence.ts new file mode 100644 index 000000000..212c9a7c9 --- /dev/null +++ b/src/ceramic_sci/convergence.ts @@ -0,0 +1,14 @@ +/** ceramic_sci convergence module — tsb analytics library. */ +export interface CeramicSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface CeramicSciConvergenceResult { values: number[]; converged: boolean; } +export function computeCeramicSciConvergence(data: number[], opts: CeramicSciConvergenceOptions = {}): CeramicSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciConvergence }; diff --git a/src/ceramic_sci/convex.ts b/src/ceramic_sci/convex.ts new file mode 100644 index 000000000..a3c47c28f --- /dev/null +++ b/src/ceramic_sci/convex.ts @@ -0,0 +1,14 @@ +/** ceramic_sci convex module — tsb analytics library. */ +export interface CeramicSciConvexOptions { tol?: number; maxIter?: number; } +export interface CeramicSciConvexResult { values: number[]; converged: boolean; } +export function computeCeramicSciConvex(data: number[], opts: CeramicSciConvexOptions = {}): CeramicSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciConvex }; diff --git a/src/ceramic_sci/correlation.ts b/src/ceramic_sci/correlation.ts new file mode 100644 index 000000000..7482a6aca --- /dev/null +++ b/src/ceramic_sci/correlation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci correlation module — tsb analytics library. */ +export interface CeramicSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCorrelationResult { values: number[]; converged: boolean; } +export function computeCeramicSciCorrelation(data: number[], opts: CeramicSciCorrelationOptions = {}): CeramicSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCorrelation }; diff --git a/src/ceramic_sci/covariance.ts b/src/ceramic_sci/covariance.ts new file mode 100644 index 000000000..213461754 --- /dev/null +++ b/src/ceramic_sci/covariance.ts @@ -0,0 +1,14 @@ +/** ceramic_sci covariance module — tsb analytics library. */ +export interface CeramicSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCovarianceResult { values: number[]; converged: boolean; } +export function computeCeramicSciCovariance(data: number[], opts: CeramicSciCovarianceOptions = {}): CeramicSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCovariance }; diff --git a/src/ceramic_sci/cross_validation.ts b/src/ceramic_sci/cross_validation.ts new file mode 100644 index 000000000..57e1e4219 --- /dev/null +++ b/src/ceramic_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci cross_validation module — tsb analytics library. */ +export interface CeramicSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeCeramicSciCrossValidation(data: number[], opts: CeramicSciCrossValidationOptions = {}): CeramicSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciCrossValidation }; diff --git a/src/ceramic_sci/decoding.ts b/src/ceramic_sci/decoding.ts new file mode 100644 index 000000000..d7ed8c4be --- /dev/null +++ b/src/ceramic_sci/decoding.ts @@ -0,0 +1,14 @@ +/** ceramic_sci decoding module — tsb analytics library. */ +export interface CeramicSciDecodingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDecodingResult { values: number[]; converged: boolean; } +export function computeCeramicSciDecoding(data: number[], opts: CeramicSciDecodingOptions = {}): CeramicSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDecoding }; diff --git a/src/ceramic_sci/decomposition.ts b/src/ceramic_sci/decomposition.ts new file mode 100644 index 000000000..28c93015d --- /dev/null +++ b/src/ceramic_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** ceramic_sci decomposition module — tsb analytics library. */ +export interface CeramicSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDecompositionResult { values: number[]; converged: boolean; } +export function computeCeramicSciDecomposition(data: number[], opts: CeramicSciDecompositionOptions = {}): CeramicSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDecomposition }; diff --git a/src/ceramic_sci/detection.ts b/src/ceramic_sci/detection.ts new file mode 100644 index 000000000..e94f0fb30 --- /dev/null +++ b/src/ceramic_sci/detection.ts @@ -0,0 +1,14 @@ +/** ceramic_sci detection module — tsb analytics library. */ +export interface CeramicSciDetectionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDetectionResult { values: number[]; converged: boolean; } +export function computeCeramicSciDetection(data: number[], opts: CeramicSciDetectionOptions = {}): CeramicSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDetection }; diff --git a/src/ceramic_sci/deterministic.ts b/src/ceramic_sci/deterministic.ts new file mode 100644 index 000000000..3ddeb9e69 --- /dev/null +++ b/src/ceramic_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** ceramic_sci deterministic module — tsb analytics library. */ +export interface CeramicSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDeterministicResult { values: number[]; converged: boolean; } +export function computeCeramicSciDeterministic(data: number[], opts: CeramicSciDeterministicOptions = {}): CeramicSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDeterministic }; diff --git a/src/ceramic_sci/diagnostics.ts b/src/ceramic_sci/diagnostics.ts new file mode 100644 index 000000000..3b6e68077 --- /dev/null +++ b/src/ceramic_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** ceramic_sci diagnostics module — tsb analytics library. */ +export interface CeramicSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeCeramicSciDiagnostics(data: number[], opts: CeramicSciDiagnosticsOptions = {}): CeramicSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDiagnostics }; diff --git a/src/ceramic_sci/differential.ts b/src/ceramic_sci/differential.ts new file mode 100644 index 000000000..9502bbbaa --- /dev/null +++ b/src/ceramic_sci/differential.ts @@ -0,0 +1,14 @@ +/** ceramic_sci differential module — tsb analytics library. */ +export interface CeramicSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDifferentialResult { values: number[]; converged: boolean; } +export function computeCeramicSciDifferential(data: number[], opts: CeramicSciDifferentialOptions = {}): CeramicSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDifferential }; diff --git a/src/ceramic_sci/discrete.ts b/src/ceramic_sci/discrete.ts new file mode 100644 index 000000000..ab1565b89 --- /dev/null +++ b/src/ceramic_sci/discrete.ts @@ -0,0 +1,14 @@ +/** ceramic_sci discrete module — tsb analytics library. */ +export interface CeramicSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDiscreteResult { values: number[]; converged: boolean; } +export function computeCeramicSciDiscrete(data: number[], opts: CeramicSciDiscreteOptions = {}): CeramicSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDiscrete }; diff --git a/src/ceramic_sci/distribution.ts b/src/ceramic_sci/distribution.ts new file mode 100644 index 000000000..27461d643 --- /dev/null +++ b/src/ceramic_sci/distribution.ts @@ -0,0 +1,14 @@ +/** ceramic_sci distribution module — tsb analytics library. */ +export interface CeramicSciDistributionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDistributionResult { values: number[]; converged: boolean; } +export function computeCeramicSciDistribution(data: number[], opts: CeramicSciDistributionOptions = {}): CeramicSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDistribution }; diff --git a/src/ceramic_sci/dynamic.ts b/src/ceramic_sci/dynamic.ts new file mode 100644 index 000000000..65db8796c --- /dev/null +++ b/src/ceramic_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** ceramic_sci dynamic module — tsb analytics library. */ +export interface CeramicSciDynamicOptions { tol?: number; maxIter?: number; } +export interface CeramicSciDynamicResult { values: number[]; converged: boolean; } +export function computeCeramicSciDynamic(data: number[], opts: CeramicSciDynamicOptions = {}): CeramicSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciDynamic }; diff --git a/src/ceramic_sci/embedding.ts b/src/ceramic_sci/embedding.ts new file mode 100644 index 000000000..1055506fd --- /dev/null +++ b/src/ceramic_sci/embedding.ts @@ -0,0 +1,14 @@ +/** ceramic_sci embedding module — tsb analytics library. */ +export interface CeramicSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeCeramicSciEmbedding(data: number[], opts: CeramicSciEmbeddingOptions = {}): CeramicSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciEmbedding }; diff --git a/src/ceramic_sci/encoding.ts b/src/ceramic_sci/encoding.ts new file mode 100644 index 000000000..89f521763 --- /dev/null +++ b/src/ceramic_sci/encoding.ts @@ -0,0 +1,14 @@ +/** ceramic_sci encoding module — tsb analytics library. */ +export interface CeramicSciEncodingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciEncodingResult { values: number[]; converged: boolean; } +export function computeCeramicSciEncoding(data: number[], opts: CeramicSciEncodingOptions = {}): CeramicSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciEncoding }; diff --git a/src/ceramic_sci/ensemble.ts b/src/ceramic_sci/ensemble.ts new file mode 100644 index 000000000..daec59ac3 --- /dev/null +++ b/src/ceramic_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** ceramic_sci ensemble module — tsb analytics library. */ +export interface CeramicSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface CeramicSciEnsembleResult { values: number[]; converged: boolean; } +export function computeCeramicSciEnsemble(data: number[], opts: CeramicSciEnsembleOptions = {}): CeramicSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciEnsemble }; diff --git a/src/ceramic_sci/estimation.ts b/src/ceramic_sci/estimation.ts new file mode 100644 index 000000000..e4c6e6459 --- /dev/null +++ b/src/ceramic_sci/estimation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci estimation module — tsb analytics library. */ +export interface CeramicSciEstimationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciEstimationResult { values: number[]; converged: boolean; } +export function computeCeramicSciEstimation(data: number[], opts: CeramicSciEstimationOptions = {}): CeramicSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciEstimation }; diff --git a/src/ceramic_sci/evaluation.ts b/src/ceramic_sci/evaluation.ts new file mode 100644 index 000000000..0e22d8f4c --- /dev/null +++ b/src/ceramic_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci evaluation module — tsb analytics library. */ +export interface CeramicSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciEvaluationResult { values: number[]; converged: boolean; } +export function computeCeramicSciEvaluation(data: number[], opts: CeramicSciEvaluationOptions = {}): CeramicSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciEvaluation }; diff --git a/src/ceramic_sci/extrapolation.ts b/src/ceramic_sci/extrapolation.ts new file mode 100644 index 000000000..533bf146d --- /dev/null +++ b/src/ceramic_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci extrapolation module — tsb analytics library. */ +export interface CeramicSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeCeramicSciExtrapolation(data: number[], opts: CeramicSciExtrapolationOptions = {}): CeramicSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciExtrapolation }; diff --git a/src/ceramic_sci/features.ts b/src/ceramic_sci/features.ts new file mode 100644 index 000000000..87c540178 --- /dev/null +++ b/src/ceramic_sci/features.ts @@ -0,0 +1,14 @@ +/** ceramic_sci features module — tsb analytics library. */ +export interface CeramicSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface CeramicSciFeaturesResult { values: number[]; converged: boolean; } +export function computeCeramicSciFeatures(data: number[], opts: CeramicSciFeaturesOptions = {}): CeramicSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciFeatures }; diff --git a/src/ceramic_sci/feedback.ts b/src/ceramic_sci/feedback.ts new file mode 100644 index 000000000..ae955a8f7 --- /dev/null +++ b/src/ceramic_sci/feedback.ts @@ -0,0 +1,14 @@ +/** ceramic_sci feedback module — tsb analytics library. */ +export interface CeramicSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface CeramicSciFeedbackResult { values: number[]; converged: boolean; } +export function computeCeramicSciFeedback(data: number[], opts: CeramicSciFeedbackOptions = {}): CeramicSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciFeedback }; diff --git a/src/ceramic_sci/filtering.ts b/src/ceramic_sci/filtering.ts new file mode 100644 index 000000000..008c52873 --- /dev/null +++ b/src/ceramic_sci/filtering.ts @@ -0,0 +1,14 @@ +/** ceramic_sci filtering module — tsb analytics library. */ +export interface CeramicSciFilteringOptions { tol?: number; maxIter?: number; } +export interface CeramicSciFilteringResult { values: number[]; converged: boolean; } +export function computeCeramicSciFiltering(data: number[], opts: CeramicSciFilteringOptions = {}): CeramicSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciFiltering }; diff --git a/src/ceramic_sci/fourier.ts b/src/ceramic_sci/fourier.ts new file mode 100644 index 000000000..07d3f1f5d --- /dev/null +++ b/src/ceramic_sci/fourier.ts @@ -0,0 +1,14 @@ +/** ceramic_sci fourier module — tsb analytics library. */ +export interface CeramicSciFourierOptions { tol?: number; maxIter?: number; } +export interface CeramicSciFourierResult { values: number[]; converged: boolean; } +export function computeCeramicSciFourier(data: number[], opts: CeramicSciFourierOptions = {}): CeramicSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciFourier }; diff --git a/src/ceramic_sci/fusion.ts b/src/ceramic_sci/fusion.ts new file mode 100644 index 000000000..cec28b51e --- /dev/null +++ b/src/ceramic_sci/fusion.ts @@ -0,0 +1,14 @@ +/** ceramic_sci fusion module — tsb analytics library. */ +export interface CeramicSciFusionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciFusionResult { values: number[]; converged: boolean; } +export function computeCeramicSciFusion(data: number[], opts: CeramicSciFusionOptions = {}): CeramicSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciFusion }; diff --git a/src/ceramic_sci/generation.ts b/src/ceramic_sci/generation.ts new file mode 100644 index 000000000..fcef7874d --- /dev/null +++ b/src/ceramic_sci/generation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci generation module — tsb analytics library. */ +export interface CeramicSciGenerationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciGenerationResult { values: number[]; converged: boolean; } +export function computeCeramicSciGeneration(data: number[], opts: CeramicSciGenerationOptions = {}): CeramicSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciGeneration }; diff --git a/src/ceramic_sci/geometry.ts b/src/ceramic_sci/geometry.ts new file mode 100644 index 000000000..9ade42265 --- /dev/null +++ b/src/ceramic_sci/geometry.ts @@ -0,0 +1,14 @@ +/** ceramic_sci geometry module — tsb analytics library. */ +export interface CeramicSciGeometryOptions { tol?: number; maxIter?: number; } +export interface CeramicSciGeometryResult { values: number[]; converged: boolean; } +export function computeCeramicSciGeometry(data: number[], opts: CeramicSciGeometryOptions = {}): CeramicSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciGeometry }; diff --git a/src/ceramic_sci/gradient.ts b/src/ceramic_sci/gradient.ts new file mode 100644 index 000000000..2f0486ff4 --- /dev/null +++ b/src/ceramic_sci/gradient.ts @@ -0,0 +1,14 @@ +/** ceramic_sci gradient module — tsb analytics library. */ +export interface CeramicSciGradientOptions { tol?: number; maxIter?: number; } +export interface CeramicSciGradientResult { values: number[]; converged: boolean; } +export function computeCeramicSciGradient(data: number[], opts: CeramicSciGradientOptions = {}): CeramicSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciGradient }; diff --git a/src/ceramic_sci/hessian.ts b/src/ceramic_sci/hessian.ts new file mode 100644 index 000000000..ace4820f0 --- /dev/null +++ b/src/ceramic_sci/hessian.ts @@ -0,0 +1,14 @@ +/** ceramic_sci hessian module — tsb analytics library. */ +export interface CeramicSciHessianOptions { tol?: number; maxIter?: number; } +export interface CeramicSciHessianResult { values: number[]; converged: boolean; } +export function computeCeramicSciHessian(data: number[], opts: CeramicSciHessianOptions = {}): CeramicSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciHessian }; diff --git a/src/ceramic_sci/hypothesis.ts b/src/ceramic_sci/hypothesis.ts new file mode 100644 index 000000000..9037a2c86 --- /dev/null +++ b/src/ceramic_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** ceramic_sci hypothesis module — tsb analytics library. */ +export interface CeramicSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface CeramicSciHypothesisResult { values: number[]; converged: boolean; } +export function computeCeramicSciHypothesis(data: number[], opts: CeramicSciHypothesisOptions = {}): CeramicSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciHypothesis }; diff --git a/src/ceramic_sci/inference.ts b/src/ceramic_sci/inference.ts new file mode 100644 index 000000000..981e70356 --- /dev/null +++ b/src/ceramic_sci/inference.ts @@ -0,0 +1,14 @@ +/** ceramic_sci inference module — tsb analytics library. */ +export interface CeramicSciInferenceOptions { tol?: number; maxIter?: number; } +export interface CeramicSciInferenceResult { values: number[]; converged: boolean; } +export function computeCeramicSciInference(data: number[], opts: CeramicSciInferenceOptions = {}): CeramicSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciInference }; diff --git a/src/ceramic_sci/inference2.ts b/src/ceramic_sci/inference2.ts new file mode 100644 index 000000000..a385b4d5f --- /dev/null +++ b/src/ceramic_sci/inference2.ts @@ -0,0 +1,14 @@ +/** ceramic_sci inference2 module — tsb analytics library. */ +export interface CeramicSciInferenceOptions { tol?: number; maxIter?: number; } +export interface CeramicSciInferenceResult { values: number[]; converged: boolean; } +export function computeCeramicSciInference(data: number[], opts: CeramicSciInferenceOptions = {}): CeramicSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciInference }; diff --git a/src/ceramic_sci/integral.ts b/src/ceramic_sci/integral.ts new file mode 100644 index 000000000..787307cc8 --- /dev/null +++ b/src/ceramic_sci/integral.ts @@ -0,0 +1,14 @@ +/** ceramic_sci integral module — tsb analytics library. */ +export interface CeramicSciIntegralOptions { tol?: number; maxIter?: number; } +export interface CeramicSciIntegralResult { values: number[]; converged: boolean; } +export function computeCeramicSciIntegral(data: number[], opts: CeramicSciIntegralOptions = {}): CeramicSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciIntegral }; diff --git a/src/ceramic_sci/integration.ts b/src/ceramic_sci/integration.ts new file mode 100644 index 000000000..5f9bb241b --- /dev/null +++ b/src/ceramic_sci/integration.ts @@ -0,0 +1,14 @@ +/** ceramic_sci integration module — tsb analytics library. */ +export interface CeramicSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciIntegrationResult { values: number[]; converged: boolean; } +export function computeCeramicSciIntegration(data: number[], opts: CeramicSciIntegrationOptions = {}): CeramicSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciIntegration }; diff --git a/src/ceramic_sci/interpolation.ts b/src/ceramic_sci/interpolation.ts new file mode 100644 index 000000000..22bc85775 --- /dev/null +++ b/src/ceramic_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci interpolation module — tsb analytics library. */ +export interface CeramicSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciInterpolationResult { values: number[]; converged: boolean; } +export function computeCeramicSciInterpolation(data: number[], opts: CeramicSciInterpolationOptions = {}): CeramicSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciInterpolation }; diff --git a/src/ceramic_sci/jacobian.ts b/src/ceramic_sci/jacobian.ts new file mode 100644 index 000000000..8e82d2945 --- /dev/null +++ b/src/ceramic_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** ceramic_sci jacobian module — tsb analytics library. */ +export interface CeramicSciJacobianOptions { tol?: number; maxIter?: number; } +export interface CeramicSciJacobianResult { values: number[]; converged: boolean; } +export function computeCeramicSciJacobian(data: number[], opts: CeramicSciJacobianOptions = {}): CeramicSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciJacobian }; diff --git a/src/ceramic_sci/kernel.ts b/src/ceramic_sci/kernel.ts new file mode 100644 index 000000000..ea249d536 --- /dev/null +++ b/src/ceramic_sci/kernel.ts @@ -0,0 +1,14 @@ +/** ceramic_sci kernel module — tsb analytics library. */ +export interface CeramicSciKernelOptions { tol?: number; maxIter?: number; } +export interface CeramicSciKernelResult { values: number[]; converged: boolean; } +export function computeCeramicSciKernel(data: number[], opts: CeramicSciKernelOptions = {}): CeramicSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciKernel }; diff --git a/src/ceramic_sci/laplacian.ts b/src/ceramic_sci/laplacian.ts new file mode 100644 index 000000000..40c91fad8 --- /dev/null +++ b/src/ceramic_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** ceramic_sci laplacian module — tsb analytics library. */ +export interface CeramicSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface CeramicSciLaplacianResult { values: number[]; converged: boolean; } +export function computeCeramicSciLaplacian(data: number[], opts: CeramicSciLaplacianOptions = {}): CeramicSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciLaplacian }; diff --git a/src/ceramic_sci/learning.ts b/src/ceramic_sci/learning.ts new file mode 100644 index 000000000..f81ac094b --- /dev/null +++ b/src/ceramic_sci/learning.ts @@ -0,0 +1,14 @@ +/** ceramic_sci learning module — tsb analytics library. */ +export interface CeramicSciLearningOptions { tol?: number; maxIter?: number; } +export interface CeramicSciLearningResult { values: number[]; converged: boolean; } +export function computeCeramicSciLearning(data: number[], opts: CeramicSciLearningOptions = {}): CeramicSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciLearning }; diff --git a/src/ceramic_sci/linear.ts b/src/ceramic_sci/linear.ts new file mode 100644 index 000000000..7e9f5d01c --- /dev/null +++ b/src/ceramic_sci/linear.ts @@ -0,0 +1,14 @@ +/** ceramic_sci linear module — tsb analytics library. */ +export interface CeramicSciLinearOptions { tol?: number; maxIter?: number; } +export interface CeramicSciLinearResult { values: number[]; converged: boolean; } +export function computeCeramicSciLinear(data: number[], opts: CeramicSciLinearOptions = {}): CeramicSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciLinear }; diff --git a/src/ceramic_sci/manifold.ts b/src/ceramic_sci/manifold.ts new file mode 100644 index 000000000..9c9c3474f --- /dev/null +++ b/src/ceramic_sci/manifold.ts @@ -0,0 +1,14 @@ +/** ceramic_sci manifold module — tsb analytics library. */ +export interface CeramicSciManifoldOptions { tol?: number; maxIter?: number; } +export interface CeramicSciManifoldResult { values: number[]; converged: boolean; } +export function computeCeramicSciManifold(data: number[], opts: CeramicSciManifoldOptions = {}): CeramicSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciManifold }; diff --git a/src/ceramic_sci/matching.ts b/src/ceramic_sci/matching.ts new file mode 100644 index 000000000..be7bf9df1 --- /dev/null +++ b/src/ceramic_sci/matching.ts @@ -0,0 +1,14 @@ +/** ceramic_sci matching module — tsb analytics library. */ +export interface CeramicSciMatchingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciMatchingResult { values: number[]; converged: boolean; } +export function computeCeramicSciMatching(data: number[], opts: CeramicSciMatchingOptions = {}): CeramicSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciMatching }; diff --git a/src/ceramic_sci/measurement.ts b/src/ceramic_sci/measurement.ts new file mode 100644 index 000000000..e411aec4f --- /dev/null +++ b/src/ceramic_sci/measurement.ts @@ -0,0 +1,14 @@ +/** ceramic_sci measurement module — tsb analytics library. */ +export interface CeramicSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface CeramicSciMeasurementResult { values: number[]; converged: boolean; } +export function computeCeramicSciMeasurement(data: number[], opts: CeramicSciMeasurementOptions = {}): CeramicSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciMeasurement }; diff --git a/src/ceramic_sci/metrics.ts b/src/ceramic_sci/metrics.ts new file mode 100644 index 000000000..c215fa593 --- /dev/null +++ b/src/ceramic_sci/metrics.ts @@ -0,0 +1,14 @@ +/** ceramic_sci metrics module — tsb analytics library. */ +export interface CeramicSciMetricsOptions { tol?: number; maxIter?: number; } +export interface CeramicSciMetricsResult { values: number[]; converged: boolean; } +export function computeCeramicSciMetrics(data: number[], opts: CeramicSciMetricsOptions = {}): CeramicSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciMetrics }; diff --git a/src/ceramic_sci/modeling.ts b/src/ceramic_sci/modeling.ts new file mode 100644 index 000000000..27436395f --- /dev/null +++ b/src/ceramic_sci/modeling.ts @@ -0,0 +1,14 @@ +/** ceramic_sci modeling module — tsb analytics library. */ +export interface CeramicSciModelingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciModelingResult { values: number[]; converged: boolean; } +export function computeCeramicSciModeling(data: number[], opts: CeramicSciModelingOptions = {}): CeramicSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciModeling }; diff --git a/src/ceramic_sci/monitoring.ts b/src/ceramic_sci/monitoring.ts new file mode 100644 index 000000000..7b5c3cca5 --- /dev/null +++ b/src/ceramic_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** ceramic_sci monitoring module — tsb analytics library. */ +export interface CeramicSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface CeramicSciMonitoringResult { values: number[]; converged: boolean; } +export function computeCeramicSciMonitoring(data: number[], opts: CeramicSciMonitoringOptions = {}): CeramicSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciMonitoring }; diff --git a/src/ceramic_sci/nonlinear.ts b/src/ceramic_sci/nonlinear.ts new file mode 100644 index 000000000..5eb7cf00b --- /dev/null +++ b/src/ceramic_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** ceramic_sci nonlinear module — tsb analytics library. */ +export interface CeramicSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface CeramicSciNonlinearResult { values: number[]; converged: boolean; } +export function computeCeramicSciNonlinear(data: number[], opts: CeramicSciNonlinearOptions = {}): CeramicSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciNonlinear }; diff --git a/src/ceramic_sci/normalization.ts b/src/ceramic_sci/normalization.ts new file mode 100644 index 000000000..ab88abceb --- /dev/null +++ b/src/ceramic_sci/normalization.ts @@ -0,0 +1,14 @@ +/** ceramic_sci normalization module — tsb analytics library. */ +export interface CeramicSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciNormalizationResult { values: number[]; converged: boolean; } +export function computeCeramicSciNormalization(data: number[], opts: CeramicSciNormalizationOptions = {}): CeramicSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciNormalization }; diff --git a/src/ceramic_sci/optimization.ts b/src/ceramic_sci/optimization.ts new file mode 100644 index 000000000..7440980da --- /dev/null +++ b/src/ceramic_sci/optimization.ts @@ -0,0 +1,14 @@ +/** ceramic_sci optimization module — tsb analytics library. */ +export interface CeramicSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciOptimizationResult { values: number[]; converged: boolean; } +export function computeCeramicSciOptimization(data: number[], opts: CeramicSciOptimizationOptions = {}): CeramicSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciOptimization }; diff --git a/src/ceramic_sci/patterns.ts b/src/ceramic_sci/patterns.ts new file mode 100644 index 000000000..646ed4419 --- /dev/null +++ b/src/ceramic_sci/patterns.ts @@ -0,0 +1,14 @@ +/** ceramic_sci patterns module — tsb analytics library. */ +export interface CeramicSciPatternsOptions { tol?: number; maxIter?: number; } +export interface CeramicSciPatternsResult { values: number[]; converged: boolean; } +export function computeCeramicSciPatterns(data: number[], opts: CeramicSciPatternsOptions = {}): CeramicSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciPatterns }; diff --git a/src/ceramic_sci/permutation.ts b/src/ceramic_sci/permutation.ts new file mode 100644 index 000000000..a624b2693 --- /dev/null +++ b/src/ceramic_sci/permutation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci permutation module — tsb analytics library. */ +export interface CeramicSciPermutationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciPermutationResult { values: number[]; converged: boolean; } +export function computeCeramicSciPermutation(data: number[], opts: CeramicSciPermutationOptions = {}): CeramicSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciPermutation }; diff --git a/src/ceramic_sci/prediction.ts b/src/ceramic_sci/prediction.ts new file mode 100644 index 000000000..929ea3022 --- /dev/null +++ b/src/ceramic_sci/prediction.ts @@ -0,0 +1,14 @@ +/** ceramic_sci prediction module — tsb analytics library. */ +export interface CeramicSciPredictionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciPredictionResult { values: number[]; converged: boolean; } +export function computeCeramicSciPrediction(data: number[], opts: CeramicSciPredictionOptions = {}): CeramicSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciPrediction }; diff --git a/src/ceramic_sci/processing.ts b/src/ceramic_sci/processing.ts new file mode 100644 index 000000000..8b1205c1e --- /dev/null +++ b/src/ceramic_sci/processing.ts @@ -0,0 +1,14 @@ +/** ceramic_sci processing module — tsb analytics library. */ +export interface CeramicSciProcessingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciProcessingResult { values: number[]; converged: boolean; } +export function computeCeramicSciProcessing(data: number[], opts: CeramicSciProcessingOptions = {}): CeramicSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciProcessing }; diff --git a/src/ceramic_sci/profiling.ts b/src/ceramic_sci/profiling.ts new file mode 100644 index 000000000..90ea8934e --- /dev/null +++ b/src/ceramic_sci/profiling.ts @@ -0,0 +1,14 @@ +/** ceramic_sci profiling module — tsb analytics library. */ +export interface CeramicSciProfilingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciProfilingResult { values: number[]; converged: boolean; } +export function computeCeramicSciProfiling(data: number[], opts: CeramicSciProfilingOptions = {}): CeramicSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciProfiling }; diff --git a/src/ceramic_sci/projection.ts b/src/ceramic_sci/projection.ts new file mode 100644 index 000000000..fe614a6c3 --- /dev/null +++ b/src/ceramic_sci/projection.ts @@ -0,0 +1,14 @@ +/** ceramic_sci projection module — tsb analytics library. */ +export interface CeramicSciProjectionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciProjectionResult { values: number[]; converged: boolean; } +export function computeCeramicSciProjection(data: number[], opts: CeramicSciProjectionOptions = {}): CeramicSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciProjection }; diff --git a/src/ceramic_sci/ranking.ts b/src/ceramic_sci/ranking.ts new file mode 100644 index 000000000..3c16418a7 --- /dev/null +++ b/src/ceramic_sci/ranking.ts @@ -0,0 +1,14 @@ +/** ceramic_sci ranking module — tsb analytics library. */ +export interface CeramicSciRankingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciRankingResult { values: number[]; converged: boolean; } +export function computeCeramicSciRanking(data: number[], opts: CeramicSciRankingOptions = {}): CeramicSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciRanking }; diff --git a/src/ceramic_sci/reconstruction.ts b/src/ceramic_sci/reconstruction.ts new file mode 100644 index 000000000..3d058b1f8 --- /dev/null +++ b/src/ceramic_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** ceramic_sci reconstruction module — tsb analytics library. */ +export interface CeramicSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciReconstructionResult { values: number[]; converged: boolean; } +export function computeCeramicSciReconstruction(data: number[], opts: CeramicSciReconstructionOptions = {}): CeramicSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciReconstruction }; diff --git a/src/ceramic_sci/registration.ts b/src/ceramic_sci/registration.ts new file mode 100644 index 000000000..ccfe31bb4 --- /dev/null +++ b/src/ceramic_sci/registration.ts @@ -0,0 +1,14 @@ +/** ceramic_sci registration module — tsb analytics library. */ +export interface CeramicSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciRegistrationResult { values: number[]; converged: boolean; } +export function computeCeramicSciRegistration(data: number[], opts: CeramicSciRegistrationOptions = {}): CeramicSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciRegistration }; diff --git a/src/ceramic_sci/regression.ts b/src/ceramic_sci/regression.ts new file mode 100644 index 000000000..b18cd2f60 --- /dev/null +++ b/src/ceramic_sci/regression.ts @@ -0,0 +1,14 @@ +/** ceramic_sci regression module — tsb analytics library. */ +export interface CeramicSciRegressionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciRegressionResult { values: number[]; converged: boolean; } +export function computeCeramicSciRegression(data: number[], opts: CeramicSciRegressionOptions = {}): CeramicSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciRegression }; diff --git a/src/ceramic_sci/regularization.ts b/src/ceramic_sci/regularization.ts new file mode 100644 index 000000000..216b2c354 --- /dev/null +++ b/src/ceramic_sci/regularization.ts @@ -0,0 +1,14 @@ +/** ceramic_sci regularization module — tsb analytics library. */ +export interface CeramicSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciRegularizationResult { values: number[]; converged: boolean; } +export function computeCeramicSciRegularization(data: number[], opts: CeramicSciRegularizationOptions = {}): CeramicSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciRegularization }; diff --git a/src/ceramic_sci/robustness.ts b/src/ceramic_sci/robustness.ts new file mode 100644 index 000000000..ed276facb --- /dev/null +++ b/src/ceramic_sci/robustness.ts @@ -0,0 +1,14 @@ +/** ceramic_sci robustness module — tsb analytics library. */ +export interface CeramicSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface CeramicSciRobustnessResult { values: number[]; converged: boolean; } +export function computeCeramicSciRobustness(data: number[], opts: CeramicSciRobustnessOptions = {}): CeramicSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciRobustness }; diff --git a/src/ceramic_sci/sampling.ts b/src/ceramic_sci/sampling.ts new file mode 100644 index 000000000..10b41b90f --- /dev/null +++ b/src/ceramic_sci/sampling.ts @@ -0,0 +1,14 @@ +/** ceramic_sci sampling module — tsb analytics library. */ +export interface CeramicSciSamplingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSamplingResult { values: number[]; converged: boolean; } +export function computeCeramicSciSampling(data: number[], opts: CeramicSciSamplingOptions = {}): CeramicSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSampling }; diff --git a/src/ceramic_sci/sampling2.ts b/src/ceramic_sci/sampling2.ts new file mode 100644 index 000000000..b90b8907a --- /dev/null +++ b/src/ceramic_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** ceramic_sci sampling2 module — tsb analytics library. */ +export interface CeramicSciSamplingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSamplingResult { values: number[]; converged: boolean; } +export function computeCeramicSciSampling(data: number[], opts: CeramicSciSamplingOptions = {}): CeramicSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSampling }; diff --git a/src/ceramic_sci/scaling.ts b/src/ceramic_sci/scaling.ts new file mode 100644 index 000000000..e87b7bca7 --- /dev/null +++ b/src/ceramic_sci/scaling.ts @@ -0,0 +1,14 @@ +/** ceramic_sci scaling module — tsb analytics library. */ +export interface CeramicSciScalingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciScalingResult { values: number[]; converged: boolean; } +export function computeCeramicSciScaling(data: number[], opts: CeramicSciScalingOptions = {}): CeramicSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciScaling }; diff --git a/src/ceramic_sci/scoring.ts b/src/ceramic_sci/scoring.ts new file mode 100644 index 000000000..bdbe4274e --- /dev/null +++ b/src/ceramic_sci/scoring.ts @@ -0,0 +1,14 @@ +/** ceramic_sci scoring module — tsb analytics library. */ +export interface CeramicSciScoringOptions { tol?: number; maxIter?: number; } +export interface CeramicSciScoringResult { values: number[]; converged: boolean; } +export function computeCeramicSciScoring(data: number[], opts: CeramicSciScoringOptions = {}): CeramicSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciScoring }; diff --git a/src/ceramic_sci/segmentation.ts b/src/ceramic_sci/segmentation.ts new file mode 100644 index 000000000..946510ff6 --- /dev/null +++ b/src/ceramic_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci segmentation module — tsb analytics library. */ +export interface CeramicSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSegmentationResult { values: number[]; converged: boolean; } +export function computeCeramicSciSegmentation(data: number[], opts: CeramicSciSegmentationOptions = {}): CeramicSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSegmentation }; diff --git a/src/ceramic_sci/selection.ts b/src/ceramic_sci/selection.ts new file mode 100644 index 000000000..f7f820490 --- /dev/null +++ b/src/ceramic_sci/selection.ts @@ -0,0 +1,14 @@ +/** ceramic_sci selection module — tsb analytics library. */ +export interface CeramicSciSelectionOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSelectionResult { values: number[]; converged: boolean; } +export function computeCeramicSciSelection(data: number[], opts: CeramicSciSelectionOptions = {}): CeramicSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSelection }; diff --git a/src/ceramic_sci/sensitivity.ts b/src/ceramic_sci/sensitivity.ts new file mode 100644 index 000000000..4aa76b7ee --- /dev/null +++ b/src/ceramic_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** ceramic_sci sensitivity module — tsb analytics library. */ +export interface CeramicSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSensitivityResult { values: number[]; converged: boolean; } +export function computeCeramicSciSensitivity(data: number[], opts: CeramicSciSensitivityOptions = {}): CeramicSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSensitivity }; diff --git a/src/ceramic_sci/simulation.ts b/src/ceramic_sci/simulation.ts new file mode 100644 index 000000000..4c2ae3a4b --- /dev/null +++ b/src/ceramic_sci/simulation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci simulation module — tsb analytics library. */ +export interface CeramicSciSimulationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSimulationResult { values: number[]; converged: boolean; } +export function computeCeramicSciSimulation(data: number[], opts: CeramicSciSimulationOptions = {}): CeramicSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSimulation }; diff --git a/src/ceramic_sci/smoothing.ts b/src/ceramic_sci/smoothing.ts new file mode 100644 index 000000000..3f8d4ad45 --- /dev/null +++ b/src/ceramic_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** ceramic_sci smoothing module — tsb analytics library. */ +export interface CeramicSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSmoothingResult { values: number[]; converged: boolean; } +export function computeCeramicSciSmoothing(data: number[], opts: CeramicSciSmoothingOptions = {}): CeramicSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSmoothing }; diff --git a/src/ceramic_sci/stability.ts b/src/ceramic_sci/stability.ts new file mode 100644 index 000000000..8ccfef51e --- /dev/null +++ b/src/ceramic_sci/stability.ts @@ -0,0 +1,14 @@ +/** ceramic_sci stability module — tsb analytics library. */ +export interface CeramicSciStabilityOptions { tol?: number; maxIter?: number; } +export interface CeramicSciStabilityResult { values: number[]; converged: boolean; } +export function computeCeramicSciStability(data: number[], opts: CeramicSciStabilityOptions = {}): CeramicSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciStability }; diff --git a/src/ceramic_sci/stacking.ts b/src/ceramic_sci/stacking.ts new file mode 100644 index 000000000..eb7262477 --- /dev/null +++ b/src/ceramic_sci/stacking.ts @@ -0,0 +1,14 @@ +/** ceramic_sci stacking module — tsb analytics library. */ +export interface CeramicSciStackingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciStackingResult { values: number[]; converged: boolean; } +export function computeCeramicSciStacking(data: number[], opts: CeramicSciStackingOptions = {}): CeramicSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciStacking }; diff --git a/src/ceramic_sci/standardization.ts b/src/ceramic_sci/standardization.ts new file mode 100644 index 000000000..5dea35569 --- /dev/null +++ b/src/ceramic_sci/standardization.ts @@ -0,0 +1,14 @@ +/** ceramic_sci standardization module — tsb analytics library. */ +export interface CeramicSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciStandardizationResult { values: number[]; converged: boolean; } +export function computeCeramicSciStandardization(data: number[], opts: CeramicSciStandardizationOptions = {}): CeramicSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciStandardization }; diff --git a/src/ceramic_sci/static.ts b/src/ceramic_sci/static.ts new file mode 100644 index 000000000..16d8d0f93 --- /dev/null +++ b/src/ceramic_sci/static.ts @@ -0,0 +1,14 @@ +/** ceramic_sci static module — tsb analytics library. */ +export interface CeramicSciStaticOptions { tol?: number; maxIter?: number; } +export interface CeramicSciStaticResult { values: number[]; converged: boolean; } +export function computeCeramicSciStatic(data: number[], opts: CeramicSciStaticOptions = {}): CeramicSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciStatic }; diff --git a/src/ceramic_sci/stochastic.ts b/src/ceramic_sci/stochastic.ts new file mode 100644 index 000000000..105c5ace2 --- /dev/null +++ b/src/ceramic_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** ceramic_sci stochastic module — tsb analytics library. */ +export interface CeramicSciStochasticOptions { tol?: number; maxIter?: number; } +export interface CeramicSciStochasticResult { values: number[]; converged: boolean; } +export function computeCeramicSciStochastic(data: number[], opts: CeramicSciStochasticOptions = {}): CeramicSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciStochastic }; diff --git a/src/ceramic_sci/synthesis.ts b/src/ceramic_sci/synthesis.ts new file mode 100644 index 000000000..171edf778 --- /dev/null +++ b/src/ceramic_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** ceramic_sci synthesis module — tsb analytics library. */ +export interface CeramicSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface CeramicSciSynthesisResult { values: number[]; converged: boolean; } +export function computeCeramicSciSynthesis(data: number[], opts: CeramicSciSynthesisOptions = {}): CeramicSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciSynthesis }; diff --git a/src/ceramic_sci/topology.ts b/src/ceramic_sci/topology.ts new file mode 100644 index 000000000..f816d275c --- /dev/null +++ b/src/ceramic_sci/topology.ts @@ -0,0 +1,14 @@ +/** ceramic_sci topology module — tsb analytics library. */ +export interface CeramicSciTopologyOptions { tol?: number; maxIter?: number; } +export interface CeramicSciTopologyResult { values: number[]; converged: boolean; } +export function computeCeramicSciTopology(data: number[], opts: CeramicSciTopologyOptions = {}): CeramicSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciTopology }; diff --git a/src/ceramic_sci/tracking.ts b/src/ceramic_sci/tracking.ts new file mode 100644 index 000000000..ab63b852b --- /dev/null +++ b/src/ceramic_sci/tracking.ts @@ -0,0 +1,14 @@ +/** ceramic_sci tracking module — tsb analytics library. */ +export interface CeramicSciTrackingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciTrackingResult { values: number[]; converged: boolean; } +export function computeCeramicSciTracking(data: number[], opts: CeramicSciTrackingOptions = {}): CeramicSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciTracking }; diff --git a/src/ceramic_sci/transform.ts b/src/ceramic_sci/transform.ts new file mode 100644 index 000000000..968d42448 --- /dev/null +++ b/src/ceramic_sci/transform.ts @@ -0,0 +1,14 @@ +/** ceramic_sci transform module — tsb analytics library. */ +export interface CeramicSciTransformOptions { tol?: number; maxIter?: number; } +export interface CeramicSciTransformResult { values: number[]; converged: boolean; } +export function computeCeramicSciTransform(data: number[], opts: CeramicSciTransformOptions = {}): CeramicSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciTransform }; diff --git a/src/ceramic_sci/uncertainty.ts b/src/ceramic_sci/uncertainty.ts new file mode 100644 index 000000000..f72e9c051 --- /dev/null +++ b/src/ceramic_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** ceramic_sci uncertainty module — tsb analytics library. */ +export interface CeramicSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface CeramicSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeCeramicSciUncertainty(data: number[], opts: CeramicSciUncertaintyOptions = {}): CeramicSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciUncertainty }; diff --git a/src/ceramic_sci/validation.ts b/src/ceramic_sci/validation.ts new file mode 100644 index 000000000..eff2a428c --- /dev/null +++ b/src/ceramic_sci/validation.ts @@ -0,0 +1,14 @@ +/** ceramic_sci validation module — tsb analytics library. */ +export interface CeramicSciValidationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciValidationResult { values: number[]; converged: boolean; } +export function computeCeramicSciValidation(data: number[], opts: CeramicSciValidationOptions = {}): CeramicSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciValidation }; diff --git a/src/ceramic_sci/verification.ts b/src/ceramic_sci/verification.ts new file mode 100644 index 000000000..2aeb68547 --- /dev/null +++ b/src/ceramic_sci/verification.ts @@ -0,0 +1,14 @@ +/** ceramic_sci verification module — tsb analytics library. */ +export interface CeramicSciVerificationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciVerificationResult { values: number[]; converged: boolean; } +export function computeCeramicSciVerification(data: number[], opts: CeramicSciVerificationOptions = {}): CeramicSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciVerification }; diff --git a/src/ceramic_sci/visualization.ts b/src/ceramic_sci/visualization.ts new file mode 100644 index 000000000..0cead826c --- /dev/null +++ b/src/ceramic_sci/visualization.ts @@ -0,0 +1,14 @@ +/** ceramic_sci visualization module — tsb analytics library. */ +export interface CeramicSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface CeramicSciVisualizationResult { values: number[]; converged: boolean; } +export function computeCeramicSciVisualization(data: number[], opts: CeramicSciVisualizationOptions = {}): CeramicSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciVisualization }; diff --git a/src/ceramic_sci/voting.ts b/src/ceramic_sci/voting.ts new file mode 100644 index 000000000..addef3b2c --- /dev/null +++ b/src/ceramic_sci/voting.ts @@ -0,0 +1,14 @@ +/** ceramic_sci voting module — tsb analytics library. */ +export interface CeramicSciVotingOptions { tol?: number; maxIter?: number; } +export interface CeramicSciVotingResult { values: number[]; converged: boolean; } +export function computeCeramicSciVoting(data: number[], opts: CeramicSciVotingOptions = {}): CeramicSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciVoting }; diff --git a/src/ceramic_sci/wavelet.ts b/src/ceramic_sci/wavelet.ts new file mode 100644 index 000000000..d443c16d5 --- /dev/null +++ b/src/ceramic_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** ceramic_sci wavelet module — tsb analytics library. */ +export interface CeramicSciWaveletOptions { tol?: number; maxIter?: number; } +export interface CeramicSciWaveletResult { values: number[]; converged: boolean; } +export function computeCeramicSciWavelet(data: number[], opts: CeramicSciWaveletOptions = {}): CeramicSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCeramicSciWavelet }; diff --git a/src/climate/advanced.ts b/src/climate/advanced.ts new file mode 100644 index 000000000..6425cc9ad --- /dev/null +++ b/src/climate/advanced.ts @@ -0,0 +1,15 @@ +/** Climate Advanced module — tsb analytics library. */ +export interface Climate advancedOptions { tol?: number; maxIter?: number; } +export interface Climate advancedResult { values: number[]; converged: boolean; } +export function computeClimate advanced(data: number[], opts: Climate advancedOptions = {}): Climate advancedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate advanced }; diff --git a/src/climate/aerosol.ts b/src/climate/aerosol.ts new file mode 100644 index 000000000..264820ae0 --- /dev/null +++ b/src/climate/aerosol.ts @@ -0,0 +1,22 @@ +/** Aerosol module — tsb analytics library. */ + +/** Options for Aerosol. */ +export interface AerosolOptions { tol?: number; maxIter?: number; } + +/** Result from Aerosol. */ +export interface AerosolResult { values: number[]; converged: boolean; } + +/** Compute Aerosol. */ +export function computeAerosol(data: number[], opts: AerosolOptions = {}): AerosolResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAerosol }; diff --git a/src/climate/albedo.ts b/src/climate/albedo.ts new file mode 100644 index 000000000..a86c9dbd6 --- /dev/null +++ b/src/climate/albedo.ts @@ -0,0 +1,22 @@ +/** Albedo module — tsb analytics library. */ + +/** Options for Albedo. */ +export interface AlbedoOptions { tol?: number; maxIter?: number; } + +/** Result from Albedo. */ +export interface AlbedoResult { values: number[]; converged: boolean; } + +/** Compute Albedo. */ +export function computeAlbedo(data: number[], opts: AlbedoOptions = {}): AlbedoResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAlbedo }; diff --git a/src/climate/amo.ts b/src/climate/amo.ts new file mode 100644 index 000000000..697a78483 --- /dev/null +++ b/src/climate/amo.ts @@ -0,0 +1,22 @@ +/** Amo module — tsb analytics library. */ + +/** Options for Amo. */ +export interface AmoOptions { tol?: number; maxIter?: number; } + +/** Result from Amo. */ +export interface AmoResult { values: number[]; converged: boolean; } + +/** Compute Amo. */ +export function computeAmo(data: number[], opts: AmoOptions = {}): AmoResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAmo }; diff --git a/src/climate/attribution_climate.ts b/src/climate/attribution_climate.ts new file mode 100644 index 000000000..20a70879a --- /dev/null +++ b/src/climate/attribution_climate.ts @@ -0,0 +1,22 @@ +/** Attribution Climate module — tsb analytics library. */ + +/** Options for Attribution Climate. */ +export interface AttributionClimateOptions { tol?: number; maxIter?: number; } + +/** Result from Attribution Climate. */ +export interface AttributionClimateResult { values: number[]; converged: boolean; } + +/** Compute Attribution Climate. */ +export function computeAttributionClimate(data: number[], opts: AttributionClimateOptions = {}): AttributionClimateResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeAttributionClimate }; diff --git a/src/climate/base2.ts b/src/climate/base2.ts new file mode 100644 index 000000000..505ae5e7d --- /dev/null +++ b/src/climate/base2.ts @@ -0,0 +1,15 @@ +/** Climate Base2 module — tsb analytics library. */ +export interface Climate base2Options { tol?: number; maxIter?: number; } +export interface Climate base2Result { values: number[]; converged: boolean; } +export function computeClimate base2(data: number[], opts: Climate base2Options = {}): Climate base2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate base2 }; diff --git a/src/climate/batch.ts b/src/climate/batch.ts new file mode 100644 index 000000000..2b298ca92 --- /dev/null +++ b/src/climate/batch.ts @@ -0,0 +1,15 @@ +/** Climate Batch module — tsb analytics library. */ +export interface Climate batchOptions { tol?: number; maxIter?: number; } +export interface Climate batchResult { values: number[]; converged: boolean; } +export function computeClimate batch(data: number[], opts: Climate batchOptions = {}): Climate batchResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate batch }; diff --git a/src/climate/beta.ts b/src/climate/beta.ts new file mode 100644 index 000000000..8ba0e4239 --- /dev/null +++ b/src/climate/beta.ts @@ -0,0 +1,15 @@ +/** Climate Beta module — tsb analytics library. */ +export interface Climate betaOptions { tol?: number; maxIter?: number; } +export interface Climate betaResult { values: number[]; converged: boolean; } +export function computeClimate beta(data: number[], opts: Climate betaOptions = {}): Climate betaResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate beta }; diff --git a/src/climate/carbon.ts b/src/climate/carbon.ts new file mode 100644 index 000000000..038519bab --- /dev/null +++ b/src/climate/carbon.ts @@ -0,0 +1,22 @@ +/** Carbon module — tsb analytics library. */ + +/** Options for Carbon. */ +export interface CarbonOptions { tol?: number; maxIter?: number; } + +/** Result from Carbon. */ +export interface CarbonResult { values: number[]; converged: boolean; } + +/** Compute Carbon. */ +export function computeCarbon(data: number[], opts: CarbonOptions = {}): CarbonResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCarbon }; diff --git a/src/climate/circulation.ts b/src/climate/circulation.ts new file mode 100644 index 000000000..0b253cee1 --- /dev/null +++ b/src/climate/circulation.ts @@ -0,0 +1,22 @@ +/** Circulation module — tsb analytics library. */ + +/** Options for Circulation. */ +export interface CirculationOptions { tol?: number; maxIter?: number; } + +/** Result from Circulation. */ +export interface CirculationResult { values: number[]; converged: boolean; } + +/** Compute Circulation. */ +export function computeCirculation(data: number[], opts: CirculationOptions = {}): CirculationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeCirculation }; diff --git a/src/climate/cpu.ts b/src/climate/cpu.ts new file mode 100644 index 000000000..f8ed3a587 --- /dev/null +++ b/src/climate/cpu.ts @@ -0,0 +1,15 @@ +/** Climate Cpu module — tsb analytics library. */ +export interface Climate cpuOptions { tol?: number; maxIter?: number; } +export interface Climate cpuResult { values: number[]; converged: boolean; } +export function computeClimate cpu(data: number[], opts: Climate cpuOptions = {}): Climate cpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate cpu }; diff --git a/src/climate/dense.ts b/src/climate/dense.ts new file mode 100644 index 000000000..7af9c1bd5 --- /dev/null +++ b/src/climate/dense.ts @@ -0,0 +1,15 @@ +/** Climate Dense module — tsb analytics library. */ +export interface Climate denseOptions { tol?: number; maxIter?: number; } +export interface Climate denseResult { values: number[]; converged: boolean; } +export function computeClimate dense(data: number[], opts: Climate denseOptions = {}): Climate denseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate dense }; diff --git a/src/climate/distributed.ts b/src/climate/distributed.ts new file mode 100644 index 000000000..e1ff31727 --- /dev/null +++ b/src/climate/distributed.ts @@ -0,0 +1,15 @@ +/** Climate Distributed module — tsb analytics library. */ +export interface Climate distributedOptions { tol?: number; maxIter?: number; } +export interface Climate distributedResult { values: number[]; converged: boolean; } +export function computeClimate distributed(data: number[], opts: Climate distributedOptions = {}): Climate distributedResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate distributed }; diff --git a/src/climate/enso.ts b/src/climate/enso.ts new file mode 100644 index 000000000..c31903825 --- /dev/null +++ b/src/climate/enso.ts @@ -0,0 +1,22 @@ +/** Enso module — tsb analytics library. */ + +/** Options for Enso. */ +export interface EnsoOptions { tol?: number; maxIter?: number; } + +/** Result from Enso. */ +export interface EnsoResult { values: number[]; converged: boolean; } + +/** Compute Enso. */ +export function computeEnso(data: number[], opts: EnsoOptions = {}): EnsoResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEnso }; diff --git a/src/climate/evapotranspiration.ts b/src/climate/evapotranspiration.ts new file mode 100644 index 000000000..22e8100e3 --- /dev/null +++ b/src/climate/evapotranspiration.ts @@ -0,0 +1,22 @@ +/** Evapotranspiration module — tsb analytics library. */ + +/** Options for Evapotranspiration. */ +export interface EvapotranspirationOptions { tol?: number; maxIter?: number; } + +/** Result from Evapotranspiration. */ +export interface EvapotranspirationResult { values: number[]; converged: boolean; } + +/** Compute Evapotranspiration. */ +export function computeEvapotranspiration(data: number[], opts: EvapotranspirationOptions = {}): EvapotranspirationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeEvapotranspiration }; diff --git a/src/climate/experimental.ts b/src/climate/experimental.ts new file mode 100644 index 000000000..dc2123775 --- /dev/null +++ b/src/climate/experimental.ts @@ -0,0 +1,15 @@ +/** Climate Experimental module — tsb analytics library. */ +export interface Climate experimentalOptions { tol?: number; maxIter?: number; } +export interface Climate experimentalResult { values: number[]; converged: boolean; } +export function computeClimate experimental(data: number[], opts: Climate experimentalOptions = {}): Climate experimentalResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate experimental }; diff --git a/src/climate/fast.ts b/src/climate/fast.ts new file mode 100644 index 000000000..443cf63e3 --- /dev/null +++ b/src/climate/fast.ts @@ -0,0 +1,15 @@ +/** Climate Fast module — tsb analytics library. */ +export interface Climate fastOptions { tol?: number; maxIter?: number; } +export interface Climate fastResult { values: number[]; converged: boolean; } +export function computeClimate fast(data: number[], opts: Climate fastOptions = {}): Climate fastResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate fast }; diff --git a/src/climate/feedback.ts b/src/climate/feedback.ts new file mode 100644 index 000000000..47d29cb68 --- /dev/null +++ b/src/climate/feedback.ts @@ -0,0 +1,22 @@ +/** Feedback module — tsb analytics library. */ + +/** Options for Feedback. */ +export interface FeedbackOptions { tol?: number; maxIter?: number; } + +/** Result from Feedback. */ +export interface FeedbackResult { values: number[]; converged: boolean; } + +/** Compute Feedback. */ +export function computeFeedback(data: number[], opts: FeedbackOptions = {}): FeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeFeedback }; diff --git a/src/climate/future.ts b/src/climate/future.ts new file mode 100644 index 000000000..ca7442a84 --- /dev/null +++ b/src/climate/future.ts @@ -0,0 +1,15 @@ +/** Climate Future module — tsb analytics library. */ +export interface Climate futureOptions { tol?: number; maxIter?: number; } +export interface Climate futureResult { values: number[]; converged: boolean; } +export function computeClimate future(data: number[], opts: Climate futureOptions = {}): Climate futureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate future }; diff --git a/src/climate/gpu.ts b/src/climate/gpu.ts new file mode 100644 index 000000000..91394fa4d --- /dev/null +++ b/src/climate/gpu.ts @@ -0,0 +1,15 @@ +/** Climate Gpu module — tsb analytics library. */ +export interface Climate gpuOptions { tol?: number; maxIter?: number; } +export interface Climate gpuResult { values: number[]; converged: boolean; } +export function computeClimate gpu(data: number[], opts: Climate gpuOptions = {}): Climate gpuResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate gpu }; diff --git a/src/climate/greenhouse.ts b/src/climate/greenhouse.ts new file mode 100644 index 000000000..ab0f62b16 --- /dev/null +++ b/src/climate/greenhouse.ts @@ -0,0 +1,22 @@ +/** Greenhouse module — tsb analytics library. */ + +/** Options for Greenhouse. */ +export interface GreenhouseOptions { tol?: number; maxIter?: number; } + +/** Result from Greenhouse. */ +export interface GreenhouseResult { values: number[]; converged: boolean; } + +/** Compute Greenhouse. */ +export function computeGreenhouse(data: number[], opts: GreenhouseOptions = {}): GreenhouseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeGreenhouse }; diff --git a/src/climate/humidity.ts b/src/climate/humidity.ts new file mode 100644 index 000000000..57075fe0f --- /dev/null +++ b/src/climate/humidity.ts @@ -0,0 +1,22 @@ +/** Humidity module — tsb analytics library. */ + +/** Options for Humidity. */ +export interface HumidityOptions { tol?: number; maxIter?: number; } + +/** Result from Humidity. */ +export interface HumidityResult { values: number[]; converged: boolean; } + +/** Compute Humidity. */ +export function computeHumidity(data: number[], opts: HumidityOptions = {}): HumidityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeHumidity }; diff --git a/src/climate/ice.ts b/src/climate/ice.ts new file mode 100644 index 000000000..12cc09bb8 --- /dev/null +++ b/src/climate/ice.ts @@ -0,0 +1,22 @@ +/** Ice module — tsb analytics library. */ + +/** Options for Ice. */ +export interface IceOptions { tol?: number; maxIter?: number; } + +/** Result from Ice. */ +export interface IceResult { values: number[]; converged: boolean; } + +/** Compute Ice. */ +export function computeIce(data: number[], opts: IceOptions = {}): IceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeIce }; diff --git a/src/climate/large.ts b/src/climate/large.ts new file mode 100644 index 000000000..24ff80dea --- /dev/null +++ b/src/climate/large.ts @@ -0,0 +1,15 @@ +/** Climate Large module — tsb analytics library. */ +export interface Climate largeOptions { tol?: number; maxIter?: number; } +export interface Climate largeResult { values: number[]; converged: boolean; } +export function computeClimate large(data: number[], opts: Climate largeOptions = {}): Climate largeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate large }; diff --git a/src/climate/legacy.ts b/src/climate/legacy.ts new file mode 100644 index 000000000..7652d3f26 --- /dev/null +++ b/src/climate/legacy.ts @@ -0,0 +1,15 @@ +/** Climate Legacy module — tsb analytics library. */ +export interface Climate legacyOptions { tol?: number; maxIter?: number; } +export interface Climate legacyResult { values: number[]; converged: boolean; } +export function computeClimate legacy(data: number[], opts: Climate legacyOptions = {}): Climate legacyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate legacy }; diff --git a/src/climate/lite.ts b/src/climate/lite.ts new file mode 100644 index 000000000..4beee705c --- /dev/null +++ b/src/climate/lite.ts @@ -0,0 +1,15 @@ +/** Climate Lite module — tsb analytics library. */ +export interface Climate liteOptions { tol?: number; maxIter?: number; } +export interface Climate liteResult { values: number[]; converged: boolean; } +export function computeClimate lite(data: number[], opts: Climate liteOptions = {}): Climate liteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate lite }; diff --git a/src/climate/methane.ts b/src/climate/methane.ts new file mode 100644 index 000000000..f6ddc9df6 --- /dev/null +++ b/src/climate/methane.ts @@ -0,0 +1,22 @@ +/** Methane module — tsb analytics library. */ + +/** Options for Methane. */ +export interface MethaneOptions { tol?: number; maxIter?: number; } + +/** Result from Methane. */ +export interface MethaneResult { values: number[]; converged: boolean; } + +/** Compute Methane. */ +export function computeMethane(data: number[], opts: MethaneOptions = {}): MethaneResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeMethane }; diff --git a/src/climate/mini.ts b/src/climate/mini.ts new file mode 100644 index 000000000..02723cb2e --- /dev/null +++ b/src/climate/mini.ts @@ -0,0 +1,15 @@ +/** Climate Mini module — tsb analytics library. */ +export interface Climate miniOptions { tol?: number; maxIter?: number; } +export interface Climate miniResult { values: number[]; converged: boolean; } +export function computeClimate mini(data: number[], opts: Climate miniOptions = {}): Climate miniResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate mini }; diff --git a/src/climate/nao.ts b/src/climate/nao.ts new file mode 100644 index 000000000..bb21f9231 --- /dev/null +++ b/src/climate/nao.ts @@ -0,0 +1,22 @@ +/** Nao module — tsb analytics library. */ + +/** Options for Nao. */ +export interface NaoOptions { tol?: number; maxIter?: number; } + +/** Result from Nao. */ +export interface NaoResult { values: number[]; converged: boolean; } + +/** Compute Nao. */ +export function computeNao(data: number[], opts: NaoOptions = {}): NaoResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNao }; diff --git a/src/climate/next.ts b/src/climate/next.ts new file mode 100644 index 000000000..9b362675f --- /dev/null +++ b/src/climate/next.ts @@ -0,0 +1,15 @@ +/** Climate Next module — tsb analytics library. */ +export interface Climate nextOptions { tol?: number; maxIter?: number; } +export interface Climate nextResult { values: number[]; converged: boolean; } +export function computeClimate next(data: number[], opts: Climate nextOptions = {}): Climate nextResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate next }; diff --git a/src/climate/nitrous_oxide.ts b/src/climate/nitrous_oxide.ts new file mode 100644 index 000000000..3f1326fd8 --- /dev/null +++ b/src/climate/nitrous_oxide.ts @@ -0,0 +1,22 @@ +/** Nitrous Oxide module — tsb analytics library. */ + +/** Options for Nitrous Oxide. */ +export interface NitrousOxideOptions { tol?: number; maxIter?: number; } + +/** Result from Nitrous Oxide. */ +export interface NitrousOxideResult { values: number[]; converged: boolean; } + +/** Compute Nitrous Oxide. */ +export function computeNitrousOxide(data: number[], opts: NitrousOxideOptions = {}): NitrousOxideResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeNitrousOxide }; diff --git a/src/climate/ocean_heat.ts b/src/climate/ocean_heat.ts new file mode 100644 index 000000000..2007a4405 --- /dev/null +++ b/src/climate/ocean_heat.ts @@ -0,0 +1,22 @@ +/** Ocean Heat module — tsb analytics library. */ + +/** Options for Ocean Heat. */ +export interface OceanHeatOptions { tol?: number; maxIter?: number; } + +/** Result from Ocean Heat. */ +export interface OceanHeatResult { values: number[]; converged: boolean; } + +/** Compute Ocean Heat. */ +export function computeOceanHeat(data: number[], opts: OceanHeatOptions = {}): OceanHeatResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeOceanHeat }; diff --git a/src/climate/online.ts b/src/climate/online.ts new file mode 100644 index 000000000..ccee2692d --- /dev/null +++ b/src/climate/online.ts @@ -0,0 +1,15 @@ +/** Climate Online module — tsb analytics library. */ +export interface Climate onlineOptions { tol?: number; maxIter?: number; } +export interface Climate onlineResult { values: number[]; converged: boolean; } +export function computeClimate online(data: number[], opts: Climate onlineOptions = {}): Climate onlineResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate online }; diff --git a/src/climate/ozone.ts b/src/climate/ozone.ts new file mode 100644 index 000000000..c2cfa377b --- /dev/null +++ b/src/climate/ozone.ts @@ -0,0 +1,22 @@ +/** Ozone module — tsb analytics library. */ + +/** Options for Ozone. */ +export interface OzoneOptions { tol?: number; maxIter?: number; } + +/** Result from Ozone. */ +export interface OzoneResult { values: number[]; converged: boolean; } + +/** Compute Ozone. */ +export function computeOzone(data: number[], opts: OzoneOptions = {}): OzoneResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeOzone }; diff --git a/src/climate/parallel.ts b/src/climate/parallel.ts new file mode 100644 index 000000000..93a6599f6 --- /dev/null +++ b/src/climate/parallel.ts @@ -0,0 +1,15 @@ +/** Climate Parallel module — tsb analytics library. */ +export interface Climate parallelOptions { tol?: number; maxIter?: number; } +export interface Climate parallelResult { values: number[]; converged: boolean; } +export function computeClimate parallel(data: number[], opts: Climate parallelOptions = {}): Climate parallelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate parallel }; diff --git a/src/climate/pdo.ts b/src/climate/pdo.ts new file mode 100644 index 000000000..eb1c115d8 --- /dev/null +++ b/src/climate/pdo.ts @@ -0,0 +1,22 @@ +/** Pdo module — tsb analytics library. */ + +/** Options for Pdo. */ +export interface PdoOptions { tol?: number; maxIter?: number; } + +/** Result from Pdo. */ +export interface PdoResult { values: number[]; converged: boolean; } + +/** Compute Pdo. */ +export function computePdo(data: number[], opts: PdoOptions = {}): PdoResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePdo }; diff --git a/src/climate/plus.ts b/src/climate/plus.ts new file mode 100644 index 000000000..f2b8ecf1c --- /dev/null +++ b/src/climate/plus.ts @@ -0,0 +1,15 @@ +/** Climate Plus module — tsb analytics library. */ +export interface Climate plusOptions { tol?: number; maxIter?: number; } +export interface Climate plusResult { values: number[]; converged: boolean; } +export function computeClimate plus(data: number[], opts: Climate plusOptions = {}): Climate plusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate plus }; diff --git a/src/climate/precipitation.ts b/src/climate/precipitation.ts new file mode 100644 index 000000000..fcc4aaeb9 --- /dev/null +++ b/src/climate/precipitation.ts @@ -0,0 +1,22 @@ +/** Precipitation module — tsb analytics library. */ + +/** Options for Precipitation. */ +export interface PrecipitationOptions { tol?: number; maxIter?: number; } + +/** Result from Precipitation. */ +export interface PrecipitationResult { values: number[]; converged: boolean; } + +/** Compute Precipitation. */ +export function computePrecipitation(data: number[], opts: PrecipitationOptions = {}): PrecipitationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePrecipitation }; diff --git a/src/climate/pressure.ts b/src/climate/pressure.ts new file mode 100644 index 000000000..11d9535bf --- /dev/null +++ b/src/climate/pressure.ts @@ -0,0 +1,22 @@ +/** Pressure module — tsb analytics library. */ + +/** Options for Pressure. */ +export interface PressureOptions { tol?: number; maxIter?: number; } + +/** Result from Pressure. */ +export interface PressureResult { values: number[]; converged: boolean; } + +/** Compute Pressure. */ +export function computePressure(data: number[], opts: PressureOptions = {}): PressureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computePressure }; diff --git a/src/climate/pro.ts b/src/climate/pro.ts new file mode 100644 index 000000000..b0045d089 --- /dev/null +++ b/src/climate/pro.ts @@ -0,0 +1,15 @@ +/** Climate Pro module — tsb analytics library. */ +export interface Climate proOptions { tol?: number; maxIter?: number; } +export interface Climate proResult { values: number[]; converged: boolean; } +export function computeClimate pro(data: number[], opts: Climate proOptions = {}): Climate proResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate pro }; diff --git a/src/climate/qbo.ts b/src/climate/qbo.ts new file mode 100644 index 000000000..d1c6ea8d8 --- /dev/null +++ b/src/climate/qbo.ts @@ -0,0 +1,22 @@ +/** Qbo module — tsb analytics library. */ + +/** Options for Qbo. */ +export interface QboOptions { tol?: number; maxIter?: number; } + +/** Result from Qbo. */ +export interface QboResult { values: number[]; converged: boolean; } + +/** Compute Qbo. */ +export function computeQbo(data: number[], opts: QboOptions = {}): QboResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeQbo }; diff --git a/src/climate/radiation.ts b/src/climate/radiation.ts new file mode 100644 index 000000000..aeb017db4 --- /dev/null +++ b/src/climate/radiation.ts @@ -0,0 +1,22 @@ +/** Radiation module — tsb analytics library. */ + +/** Options for Radiation. */ +export interface RadiationOptions { tol?: number; maxIter?: number; } + +/** Result from Radiation. */ +export interface RadiationResult { values: number[]; converged: boolean; } + +/** Compute Radiation. */ +export function computeRadiation(data: number[], opts: RadiationOptions = {}): RadiationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeRadiation }; diff --git a/src/climate/robust.ts b/src/climate/robust.ts new file mode 100644 index 000000000..b906aaa7f --- /dev/null +++ b/src/climate/robust.ts @@ -0,0 +1,15 @@ +/** Climate Robust module — tsb analytics library. */ +export interface Climate robustOptions { tol?: number; maxIter?: number; } +export interface Climate robustResult { values: number[]; converged: boolean; } +export function computeClimate robust(data: number[], opts: Climate robustOptions = {}): Climate robustResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate robust }; diff --git a/src/climate/sea_level.ts b/src/climate/sea_level.ts new file mode 100644 index 000000000..9a518cf39 --- /dev/null +++ b/src/climate/sea_level.ts @@ -0,0 +1,22 @@ +/** Sea Level module — tsb analytics library. */ + +/** Options for Sea Level. */ +export interface SeaLevelOptions { tol?: number; maxIter?: number; } + +/** Result from Sea Level. */ +export interface SeaLevelResult { values: number[]; converged: boolean; } + +/** Compute Sea Level. */ +export function computeSeaLevel(data: number[], opts: SeaLevelOptions = {}): SeaLevelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSeaLevel }; diff --git a/src/climate/sensitivity.ts b/src/climate/sensitivity.ts new file mode 100644 index 000000000..2c021c567 --- /dev/null +++ b/src/climate/sensitivity.ts @@ -0,0 +1,22 @@ +/** Sensitivity module — tsb analytics library. */ + +/** Options for Sensitivity. */ +export interface SensitivityOptions { tol?: number; maxIter?: number; } + +/** Result from Sensitivity. */ +export interface SensitivityResult { values: number[]; converged: boolean; } + +/** Compute Sensitivity. */ +export function computeSensitivity(data: number[], opts: SensitivityOptions = {}): SensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSensitivity }; diff --git a/src/climate/small.ts b/src/climate/small.ts new file mode 100644 index 000000000..7009f9800 --- /dev/null +++ b/src/climate/small.ts @@ -0,0 +1,15 @@ +/** Climate Small module — tsb analytics library. */ +export interface Climate smallOptions { tol?: number; maxIter?: number; } +export interface Climate smallResult { values: number[]; converged: boolean; } +export function computeClimate small(data: number[], opts: Climate smallOptions = {}): Climate smallResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate small }; diff --git a/src/climate/snow.ts b/src/climate/snow.ts new file mode 100644 index 000000000..047e1b4c8 --- /dev/null +++ b/src/climate/snow.ts @@ -0,0 +1,22 @@ +/** Snow module — tsb analytics library. */ + +/** Options for Snow. */ +export interface SnowOptions { tol?: number; maxIter?: number; } + +/** Result from Snow. */ +export interface SnowResult { values: number[]; converged: boolean; } + +/** Compute Snow. */ +export function computeSnow(data: number[], opts: SnowOptions = {}): SnowResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSnow }; diff --git a/src/climate/soil_moisture.ts b/src/climate/soil_moisture.ts new file mode 100644 index 000000000..99acf570e --- /dev/null +++ b/src/climate/soil_moisture.ts @@ -0,0 +1,22 @@ +/** Soil Moisture module — tsb analytics library. */ + +/** Options for Soil Moisture. */ +export interface SoilMoistureOptions { tol?: number; maxIter?: number; } + +/** Result from Soil Moisture. */ +export interface SoilMoistureResult { values: number[]; converged: boolean; } + +/** Compute Soil Moisture. */ +export function computeSoilMoisture(data: number[], opts: SoilMoistureOptions = {}): SoilMoistureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSoilMoisture }; diff --git a/src/climate/solar.ts b/src/climate/solar.ts new file mode 100644 index 000000000..59e46f03d --- /dev/null +++ b/src/climate/solar.ts @@ -0,0 +1,22 @@ +/** Solar module — tsb analytics library. */ + +/** Options for Solar. */ +export interface SolarOptions { tol?: number; maxIter?: number; } + +/** Result from Solar. */ +export interface SolarResult { values: number[]; converged: boolean; } + +/** Compute Solar. */ +export function computeSolar(data: number[], opts: SolarOptions = {}): SolarResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeSolar }; diff --git a/src/climate/sparse.ts b/src/climate/sparse.ts new file mode 100644 index 000000000..6d70c434f --- /dev/null +++ b/src/climate/sparse.ts @@ -0,0 +1,15 @@ +/** Climate Sparse module — tsb analytics library. */ +export interface Climate sparseOptions { tol?: number; maxIter?: number; } +export interface Climate sparseResult { values: number[]; converged: boolean; } +export function computeClimate sparse(data: number[], opts: Climate sparseOptions = {}): Climate sparseResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate sparse }; diff --git a/src/climate/stable.ts b/src/climate/stable.ts new file mode 100644 index 000000000..e23602762 --- /dev/null +++ b/src/climate/stable.ts @@ -0,0 +1,15 @@ +/** Climate Stable module — tsb analytics library. */ +export interface Climate stableOptions { tol?: number; maxIter?: number; } +export interface Climate stableResult { values: number[]; converged: boolean; } +export function computeClimate stable(data: number[], opts: Climate stableOptions = {}): Climate stableResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate stable }; diff --git a/src/climate/streaming.ts b/src/climate/streaming.ts new file mode 100644 index 000000000..00f1ab810 --- /dev/null +++ b/src/climate/streaming.ts @@ -0,0 +1,15 @@ +/** Climate Streaming module — tsb analytics library. */ +export interface Climate streamingOptions { tol?: number; maxIter?: number; } +export interface Climate streamingResult { values: number[]; converged: boolean; } +export function computeClimate streaming(data: number[], opts: Climate streamingOptions = {}): Climate streamingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate streaming }; diff --git a/src/climate/teleconnection.ts b/src/climate/teleconnection.ts new file mode 100644 index 000000000..1f68d39f5 --- /dev/null +++ b/src/climate/teleconnection.ts @@ -0,0 +1,22 @@ +/** Teleconnection module — tsb analytics library. */ + +/** Options for Teleconnection. */ +export interface TeleconnectionOptions { tol?: number; maxIter?: number; } + +/** Result from Teleconnection. */ +export interface TeleconnectionResult { values: number[]; converged: boolean; } + +/** Compute Teleconnection. */ +export function computeTeleconnection(data: number[], opts: TeleconnectionOptions = {}): TeleconnectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeTeleconnection }; diff --git a/src/climate/temperature.ts b/src/climate/temperature.ts new file mode 100644 index 000000000..0b8c1efeb --- /dev/null +++ b/src/climate/temperature.ts @@ -0,0 +1,22 @@ +/** Temperature module — tsb analytics library. */ + +/** Options for Temperature. */ +export interface TemperatureOptions { tol?: number; maxIter?: number; } + +/** Result from Temperature. */ +export interface TemperatureResult { values: number[]; converged: boolean; } + +/** Compute Temperature. */ +export function computeTemperature(data: number[], opts: TemperatureOptions = {}): TemperatureResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeTemperature }; diff --git a/src/climate/v2.ts b/src/climate/v2.ts new file mode 100644 index 000000000..81b1b1f26 --- /dev/null +++ b/src/climate/v2.ts @@ -0,0 +1,15 @@ +/** Climate V2 module — tsb analytics library. */ +export interface Climate v2Options { tol?: number; maxIter?: number; } +export interface Climate v2Result { values: number[]; converged: boolean; } +export function computeClimate v2(data: number[], opts: Climate v2Options = {}): Climate v2Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate v2 }; diff --git a/src/climate/v3.ts b/src/climate/v3.ts new file mode 100644 index 000000000..39d3895df --- /dev/null +++ b/src/climate/v3.ts @@ -0,0 +1,15 @@ +/** Climate V3 module — tsb analytics library. */ +export interface Climate v3Options { tol?: number; maxIter?: number; } +export interface Climate v3Result { values: number[]; converged: boolean; } +export function computeClimate v3(data: number[], opts: Climate v3Options = {}): Climate v3Result { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate v3 }; diff --git a/src/climate/volcanic.ts b/src/climate/volcanic.ts new file mode 100644 index 000000000..890e767a8 --- /dev/null +++ b/src/climate/volcanic.ts @@ -0,0 +1,22 @@ +/** Volcanic module — tsb analytics library. */ + +/** Options for Volcanic. */ +export interface VolcanicOptions { tol?: number; maxIter?: number; } + +/** Result from Volcanic. */ +export interface VolcanicResult { values: number[]; converged: boolean; } + +/** Compute Volcanic. */ +export function computeVolcanic(data: number[], opts: VolcanicOptions = {}): VolcanicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeVolcanic }; diff --git a/src/climate/wasm.ts b/src/climate/wasm.ts new file mode 100644 index 000000000..48a8af3d8 --- /dev/null +++ b/src/climate/wasm.ts @@ -0,0 +1,15 @@ +/** Climate Wasm module — tsb analytics library. */ +export interface Climate wasmOptions { tol?: number; maxIter?: number; } +export interface Climate wasmResult { values: number[]; converged: boolean; } +export function computeClimate wasm(data: number[], opts: Climate wasmOptions = {}): Climate wasmResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate wasm }; diff --git a/src/climate/wind.ts b/src/climate/wind.ts new file mode 100644 index 000000000..1b1abca4b --- /dev/null +++ b/src/climate/wind.ts @@ -0,0 +1,22 @@ +/** Wind module — tsb analytics library. */ + +/** Options for Wind. */ +export interface WindOptions { tol?: number; maxIter?: number; } + +/** Result from Wind. */ +export interface WindResult { values: number[]; converged: boolean; } + +/** Compute Wind. */ +export function computeWind(data: number[], opts: WindOptions = {}): WindResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} + +export default { compute: computeWind }; diff --git a/src/climate/xlarge.ts b/src/climate/xlarge.ts new file mode 100644 index 000000000..33f64b083 --- /dev/null +++ b/src/climate/xlarge.ts @@ -0,0 +1,15 @@ +/** Climate Xlarge module — tsb analytics library. */ +export interface Climate xlargeOptions { tol?: number; maxIter?: number; } +export interface Climate xlargeResult { values: number[]; converged: boolean; } +export function computeClimate xlarge(data: number[], opts: Climate xlargeOptions = {}): Climate xlargeResult { + const { tol = 1e-6, maxIter = 100 } = opts; + if (!data.length) return { values: [], converged: true }; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeClimate xlarge }; diff --git a/src/colloid_sci/adaptation.ts b/src/colloid_sci/adaptation.ts new file mode 100644 index 000000000..a78eed8b7 --- /dev/null +++ b/src/colloid_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** colloid_sci adaptation module — tsb analytics library. */ +export interface ColloidSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciAdaptationResult { values: number[]; converged: boolean; } +export function computeColloidSciAdaptation(data: number[], opts: ColloidSciAdaptationOptions = {}): ColloidSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciAdaptation }; diff --git a/src/colloid_sci/aggregation.ts b/src/colloid_sci/aggregation.ts new file mode 100644 index 000000000..b3b823331 --- /dev/null +++ b/src/colloid_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** colloid_sci aggregation module — tsb analytics library. */ +export interface ColloidSciAggregationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciAggregationResult { values: number[]; converged: boolean; } +export function computeColloidSciAggregation(data: number[], opts: ColloidSciAggregationOptions = {}): ColloidSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciAggregation }; diff --git a/src/colloid_sci/algebra.ts b/src/colloid_sci/algebra.ts new file mode 100644 index 000000000..a2c855167 --- /dev/null +++ b/src/colloid_sci/algebra.ts @@ -0,0 +1,14 @@ +/** colloid_sci algebra module — tsb analytics library. */ +export interface ColloidSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface ColloidSciAlgebraResult { values: number[]; converged: boolean; } +export function computeColloidSciAlgebra(data: number[], opts: ColloidSciAlgebraOptions = {}): ColloidSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciAlgebra }; diff --git a/src/colloid_sci/alignment.ts b/src/colloid_sci/alignment.ts new file mode 100644 index 000000000..1bba2368c --- /dev/null +++ b/src/colloid_sci/alignment.ts @@ -0,0 +1,14 @@ +/** colloid_sci alignment module — tsb analytics library. */ +export interface ColloidSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface ColloidSciAlignmentResult { values: number[]; converged: boolean; } +export function computeColloidSciAlignment(data: number[], opts: ColloidSciAlignmentOptions = {}): ColloidSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciAlignment }; diff --git a/src/colloid_sci/analysis.ts b/src/colloid_sci/analysis.ts new file mode 100644 index 000000000..d2eec1087 --- /dev/null +++ b/src/colloid_sci/analysis.ts @@ -0,0 +1,14 @@ +/** colloid_sci analysis module — tsb analytics library. */ +export interface ColloidSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface ColloidSciAnalysisResult { values: number[]; converged: boolean; } +export function computeColloidSciAnalysis(data: number[], opts: ColloidSciAnalysisOptions = {}): ColloidSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciAnalysis }; diff --git a/src/colloid_sci/augmentation.ts b/src/colloid_sci/augmentation.ts new file mode 100644 index 000000000..d78f9cfaf --- /dev/null +++ b/src/colloid_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** colloid_sci augmentation module — tsb analytics library. */ +export interface ColloidSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciAugmentationResult { values: number[]; converged: boolean; } +export function computeColloidSciAugmentation(data: number[], opts: ColloidSciAugmentationOptions = {}): ColloidSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciAugmentation }; diff --git a/src/colloid_sci/bagging.ts b/src/colloid_sci/bagging.ts new file mode 100644 index 000000000..8f8df5308 --- /dev/null +++ b/src/colloid_sci/bagging.ts @@ -0,0 +1,14 @@ +/** colloid_sci bagging module — tsb analytics library. */ +export interface ColloidSciBaggingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciBaggingResult { values: number[]; converged: boolean; } +export function computeColloidSciBagging(data: number[], opts: ColloidSciBaggingOptions = {}): ColloidSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciBagging }; diff --git a/src/colloid_sci/basis.ts b/src/colloid_sci/basis.ts new file mode 100644 index 000000000..fbb614991 --- /dev/null +++ b/src/colloid_sci/basis.ts @@ -0,0 +1,14 @@ +/** colloid_sci basis module — tsb analytics library. */ +export interface ColloidSciBasisOptions { tol?: number; maxIter?: number; } +export interface ColloidSciBasisResult { values: number[]; converged: boolean; } +export function computeColloidSciBasis(data: number[], opts: ColloidSciBasisOptions = {}): ColloidSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciBasis }; diff --git a/src/colloid_sci/benchmarking.ts b/src/colloid_sci/benchmarking.ts new file mode 100644 index 000000000..67601f294 --- /dev/null +++ b/src/colloid_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** colloid_sci benchmarking module — tsb analytics library. */ +export interface ColloidSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeColloidSciBenchmarking(data: number[], opts: ColloidSciBenchmarkingOptions = {}): ColloidSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciBenchmarking }; diff --git a/src/colloid_sci/blending.ts b/src/colloid_sci/blending.ts new file mode 100644 index 000000000..6dc5a7c91 --- /dev/null +++ b/src/colloid_sci/blending.ts @@ -0,0 +1,14 @@ +/** colloid_sci blending module — tsb analytics library. */ +export interface ColloidSciBlendingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciBlendingResult { values: number[]; converged: boolean; } +export function computeColloidSciBlending(data: number[], opts: ColloidSciBlendingOptions = {}): ColloidSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciBlending }; diff --git a/src/colloid_sci/boosting.ts b/src/colloid_sci/boosting.ts new file mode 100644 index 000000000..8fcbab415 --- /dev/null +++ b/src/colloid_sci/boosting.ts @@ -0,0 +1,14 @@ +/** colloid_sci boosting module — tsb analytics library. */ +export interface ColloidSciBoostingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciBoostingResult { values: number[]; converged: boolean; } +export function computeColloidSciBoosting(data: number[], opts: ColloidSciBoostingOptions = {}): ColloidSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciBoosting }; diff --git a/src/colloid_sci/bootstrap.ts b/src/colloid_sci/bootstrap.ts new file mode 100644 index 000000000..3aaa26106 --- /dev/null +++ b/src/colloid_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** colloid_sci bootstrap module — tsb analytics library. */ +export interface ColloidSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface ColloidSciBootstrapResult { values: number[]; converged: boolean; } +export function computeColloidSciBootstrap(data: number[], opts: ColloidSciBootstrapOptions = {}): ColloidSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciBootstrap }; diff --git a/src/colloid_sci/calculus.ts b/src/colloid_sci/calculus.ts new file mode 100644 index 000000000..f6516e6b5 --- /dev/null +++ b/src/colloid_sci/calculus.ts @@ -0,0 +1,14 @@ +/** colloid_sci calculus module — tsb analytics library. */ +export interface ColloidSciCalculusOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCalculusResult { values: number[]; converged: boolean; } +export function computeColloidSciCalculus(data: number[], opts: ColloidSciCalculusOptions = {}): ColloidSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCalculus }; diff --git a/src/colloid_sci/calibration.ts b/src/colloid_sci/calibration.ts new file mode 100644 index 000000000..4f1c8ee9e --- /dev/null +++ b/src/colloid_sci/calibration.ts @@ -0,0 +1,14 @@ +/** colloid_sci calibration module — tsb analytics library. */ +export interface ColloidSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCalibrationResult { values: number[]; converged: boolean; } +export function computeColloidSciCalibration(data: number[], opts: ColloidSciCalibrationOptions = {}): ColloidSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCalibration }; diff --git a/src/colloid_sci/characterization.ts b/src/colloid_sci/characterization.ts new file mode 100644 index 000000000..ebee5586f --- /dev/null +++ b/src/colloid_sci/characterization.ts @@ -0,0 +1,14 @@ +/** colloid_sci characterization module — tsb analytics library. */ +export interface ColloidSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeColloidSciCharacterization(data: number[], opts: ColloidSciCharacterizationOptions = {}): ColloidSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCharacterization }; diff --git a/src/colloid_sci/classification.ts b/src/colloid_sci/classification.ts new file mode 100644 index 000000000..cc461122a --- /dev/null +++ b/src/colloid_sci/classification.ts @@ -0,0 +1,14 @@ +/** colloid_sci classification module — tsb analytics library. */ +export interface ColloidSciClassificationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciClassificationResult { values: number[]; converged: boolean; } +export function computeColloidSciClassification(data: number[], opts: ColloidSciClassificationOptions = {}): ColloidSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciClassification }; diff --git a/src/colloid_sci/clustering.ts b/src/colloid_sci/clustering.ts new file mode 100644 index 000000000..5af2ffb31 --- /dev/null +++ b/src/colloid_sci/clustering.ts @@ -0,0 +1,14 @@ +/** colloid_sci clustering module — tsb analytics library. */ +export interface ColloidSciClusteringOptions { tol?: number; maxIter?: number; } +export interface ColloidSciClusteringResult { values: number[]; converged: boolean; } +export function computeColloidSciClustering(data: number[], opts: ColloidSciClusteringOptions = {}): ColloidSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciClustering }; diff --git a/src/colloid_sci/compression.ts b/src/colloid_sci/compression.ts new file mode 100644 index 000000000..f5d3c26ca --- /dev/null +++ b/src/colloid_sci/compression.ts @@ -0,0 +1,14 @@ +/** colloid_sci compression module — tsb analytics library. */ +export interface ColloidSciCompressionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCompressionResult { values: number[]; converged: boolean; } +export function computeColloidSciCompression(data: number[], opts: ColloidSciCompressionOptions = {}): ColloidSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCompression }; diff --git a/src/colloid_sci/continuous.ts b/src/colloid_sci/continuous.ts new file mode 100644 index 000000000..3106c29af --- /dev/null +++ b/src/colloid_sci/continuous.ts @@ -0,0 +1,14 @@ +/** colloid_sci continuous module — tsb analytics library. */ +export interface ColloidSciContinuousOptions { tol?: number; maxIter?: number; } +export interface ColloidSciContinuousResult { values: number[]; converged: boolean; } +export function computeColloidSciContinuous(data: number[], opts: ColloidSciContinuousOptions = {}): ColloidSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciContinuous }; diff --git a/src/colloid_sci/control.ts b/src/colloid_sci/control.ts new file mode 100644 index 000000000..a66772514 --- /dev/null +++ b/src/colloid_sci/control.ts @@ -0,0 +1,14 @@ +/** colloid_sci control module — tsb analytics library. */ +export interface ColloidSciControlOptions { tol?: number; maxIter?: number; } +export interface ColloidSciControlResult { values: number[]; converged: boolean; } +export function computeColloidSciControl(data: number[], opts: ColloidSciControlOptions = {}): ColloidSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciControl }; diff --git a/src/colloid_sci/convergence.ts b/src/colloid_sci/convergence.ts new file mode 100644 index 000000000..d54ede0b4 --- /dev/null +++ b/src/colloid_sci/convergence.ts @@ -0,0 +1,14 @@ +/** colloid_sci convergence module — tsb analytics library. */ +export interface ColloidSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface ColloidSciConvergenceResult { values: number[]; converged: boolean; } +export function computeColloidSciConvergence(data: number[], opts: ColloidSciConvergenceOptions = {}): ColloidSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciConvergence }; diff --git a/src/colloid_sci/convex.ts b/src/colloid_sci/convex.ts new file mode 100644 index 000000000..4dcbd98e9 --- /dev/null +++ b/src/colloid_sci/convex.ts @@ -0,0 +1,14 @@ +/** colloid_sci convex module — tsb analytics library. */ +export interface ColloidSciConvexOptions { tol?: number; maxIter?: number; } +export interface ColloidSciConvexResult { values: number[]; converged: boolean; } +export function computeColloidSciConvex(data: number[], opts: ColloidSciConvexOptions = {}): ColloidSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciConvex }; diff --git a/src/colloid_sci/correlation.ts b/src/colloid_sci/correlation.ts new file mode 100644 index 000000000..83318cf32 --- /dev/null +++ b/src/colloid_sci/correlation.ts @@ -0,0 +1,14 @@ +/** colloid_sci correlation module — tsb analytics library. */ +export interface ColloidSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCorrelationResult { values: number[]; converged: boolean; } +export function computeColloidSciCorrelation(data: number[], opts: ColloidSciCorrelationOptions = {}): ColloidSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCorrelation }; diff --git a/src/colloid_sci/covariance.ts b/src/colloid_sci/covariance.ts new file mode 100644 index 000000000..4c2193ab1 --- /dev/null +++ b/src/colloid_sci/covariance.ts @@ -0,0 +1,14 @@ +/** colloid_sci covariance module — tsb analytics library. */ +export interface ColloidSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCovarianceResult { values: number[]; converged: boolean; } +export function computeColloidSciCovariance(data: number[], opts: ColloidSciCovarianceOptions = {}): ColloidSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCovariance }; diff --git a/src/colloid_sci/cross_validation.ts b/src/colloid_sci/cross_validation.ts new file mode 100644 index 000000000..dd447e457 --- /dev/null +++ b/src/colloid_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** colloid_sci cross_validation module — tsb analytics library. */ +export interface ColloidSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeColloidSciCrossValidation(data: number[], opts: ColloidSciCrossValidationOptions = {}): ColloidSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciCrossValidation }; diff --git a/src/colloid_sci/decoding.ts b/src/colloid_sci/decoding.ts new file mode 100644 index 000000000..6e63f6ec7 --- /dev/null +++ b/src/colloid_sci/decoding.ts @@ -0,0 +1,14 @@ +/** colloid_sci decoding module — tsb analytics library. */ +export interface ColloidSciDecodingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDecodingResult { values: number[]; converged: boolean; } +export function computeColloidSciDecoding(data: number[], opts: ColloidSciDecodingOptions = {}): ColloidSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDecoding }; diff --git a/src/colloid_sci/decomposition.ts b/src/colloid_sci/decomposition.ts new file mode 100644 index 000000000..ee4744b7c --- /dev/null +++ b/src/colloid_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** colloid_sci decomposition module — tsb analytics library. */ +export interface ColloidSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDecompositionResult { values: number[]; converged: boolean; } +export function computeColloidSciDecomposition(data: number[], opts: ColloidSciDecompositionOptions = {}): ColloidSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDecomposition }; diff --git a/src/colloid_sci/detection.ts b/src/colloid_sci/detection.ts new file mode 100644 index 000000000..8d46eb519 --- /dev/null +++ b/src/colloid_sci/detection.ts @@ -0,0 +1,14 @@ +/** colloid_sci detection module — tsb analytics library. */ +export interface ColloidSciDetectionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDetectionResult { values: number[]; converged: boolean; } +export function computeColloidSciDetection(data: number[], opts: ColloidSciDetectionOptions = {}): ColloidSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDetection }; diff --git a/src/colloid_sci/deterministic.ts b/src/colloid_sci/deterministic.ts new file mode 100644 index 000000000..d2eb66a1a --- /dev/null +++ b/src/colloid_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** colloid_sci deterministic module — tsb analytics library. */ +export interface ColloidSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDeterministicResult { values: number[]; converged: boolean; } +export function computeColloidSciDeterministic(data: number[], opts: ColloidSciDeterministicOptions = {}): ColloidSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDeterministic }; diff --git a/src/colloid_sci/diagnostics.ts b/src/colloid_sci/diagnostics.ts new file mode 100644 index 000000000..9f856fe42 --- /dev/null +++ b/src/colloid_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** colloid_sci diagnostics module — tsb analytics library. */ +export interface ColloidSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeColloidSciDiagnostics(data: number[], opts: ColloidSciDiagnosticsOptions = {}): ColloidSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDiagnostics }; diff --git a/src/colloid_sci/differential.ts b/src/colloid_sci/differential.ts new file mode 100644 index 000000000..0f6299a05 --- /dev/null +++ b/src/colloid_sci/differential.ts @@ -0,0 +1,14 @@ +/** colloid_sci differential module — tsb analytics library. */ +export interface ColloidSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDifferentialResult { values: number[]; converged: boolean; } +export function computeColloidSciDifferential(data: number[], opts: ColloidSciDifferentialOptions = {}): ColloidSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDifferential }; diff --git a/src/colloid_sci/discrete.ts b/src/colloid_sci/discrete.ts new file mode 100644 index 000000000..5fe25ed4b --- /dev/null +++ b/src/colloid_sci/discrete.ts @@ -0,0 +1,14 @@ +/** colloid_sci discrete module — tsb analytics library. */ +export interface ColloidSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDiscreteResult { values: number[]; converged: boolean; } +export function computeColloidSciDiscrete(data: number[], opts: ColloidSciDiscreteOptions = {}): ColloidSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDiscrete }; diff --git a/src/colloid_sci/distribution.ts b/src/colloid_sci/distribution.ts new file mode 100644 index 000000000..bd24d9001 --- /dev/null +++ b/src/colloid_sci/distribution.ts @@ -0,0 +1,14 @@ +/** colloid_sci distribution module — tsb analytics library. */ +export interface ColloidSciDistributionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDistributionResult { values: number[]; converged: boolean; } +export function computeColloidSciDistribution(data: number[], opts: ColloidSciDistributionOptions = {}): ColloidSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDistribution }; diff --git a/src/colloid_sci/dynamic.ts b/src/colloid_sci/dynamic.ts new file mode 100644 index 000000000..bc13383f4 --- /dev/null +++ b/src/colloid_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** colloid_sci dynamic module — tsb analytics library. */ +export interface ColloidSciDynamicOptions { tol?: number; maxIter?: number; } +export interface ColloidSciDynamicResult { values: number[]; converged: boolean; } +export function computeColloidSciDynamic(data: number[], opts: ColloidSciDynamicOptions = {}): ColloidSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciDynamic }; diff --git a/src/colloid_sci/embedding.ts b/src/colloid_sci/embedding.ts new file mode 100644 index 000000000..d0d667d3d --- /dev/null +++ b/src/colloid_sci/embedding.ts @@ -0,0 +1,14 @@ +/** colloid_sci embedding module — tsb analytics library. */ +export interface ColloidSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeColloidSciEmbedding(data: number[], opts: ColloidSciEmbeddingOptions = {}): ColloidSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciEmbedding }; diff --git a/src/colloid_sci/encoding.ts b/src/colloid_sci/encoding.ts new file mode 100644 index 000000000..ae57fb437 --- /dev/null +++ b/src/colloid_sci/encoding.ts @@ -0,0 +1,14 @@ +/** colloid_sci encoding module — tsb analytics library. */ +export interface ColloidSciEncodingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciEncodingResult { values: number[]; converged: boolean; } +export function computeColloidSciEncoding(data: number[], opts: ColloidSciEncodingOptions = {}): ColloidSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciEncoding }; diff --git a/src/colloid_sci/ensemble.ts b/src/colloid_sci/ensemble.ts new file mode 100644 index 000000000..dcc8d269c --- /dev/null +++ b/src/colloid_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** colloid_sci ensemble module — tsb analytics library. */ +export interface ColloidSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface ColloidSciEnsembleResult { values: number[]; converged: boolean; } +export function computeColloidSciEnsemble(data: number[], opts: ColloidSciEnsembleOptions = {}): ColloidSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciEnsemble }; diff --git a/src/colloid_sci/estimation.ts b/src/colloid_sci/estimation.ts new file mode 100644 index 000000000..9b1e74452 --- /dev/null +++ b/src/colloid_sci/estimation.ts @@ -0,0 +1,14 @@ +/** colloid_sci estimation module — tsb analytics library. */ +export interface ColloidSciEstimationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciEstimationResult { values: number[]; converged: boolean; } +export function computeColloidSciEstimation(data: number[], opts: ColloidSciEstimationOptions = {}): ColloidSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciEstimation }; diff --git a/src/colloid_sci/evaluation.ts b/src/colloid_sci/evaluation.ts new file mode 100644 index 000000000..b1d7f4125 --- /dev/null +++ b/src/colloid_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** colloid_sci evaluation module — tsb analytics library. */ +export interface ColloidSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciEvaluationResult { values: number[]; converged: boolean; } +export function computeColloidSciEvaluation(data: number[], opts: ColloidSciEvaluationOptions = {}): ColloidSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciEvaluation }; diff --git a/src/colloid_sci/extrapolation.ts b/src/colloid_sci/extrapolation.ts new file mode 100644 index 000000000..5d1044633 --- /dev/null +++ b/src/colloid_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** colloid_sci extrapolation module — tsb analytics library. */ +export interface ColloidSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeColloidSciExtrapolation(data: number[], opts: ColloidSciExtrapolationOptions = {}): ColloidSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciExtrapolation }; diff --git a/src/colloid_sci/features.ts b/src/colloid_sci/features.ts new file mode 100644 index 000000000..6db1a4886 --- /dev/null +++ b/src/colloid_sci/features.ts @@ -0,0 +1,14 @@ +/** colloid_sci features module — tsb analytics library. */ +export interface ColloidSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface ColloidSciFeaturesResult { values: number[]; converged: boolean; } +export function computeColloidSciFeatures(data: number[], opts: ColloidSciFeaturesOptions = {}): ColloidSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciFeatures }; diff --git a/src/colloid_sci/feedback.ts b/src/colloid_sci/feedback.ts new file mode 100644 index 000000000..bd255683e --- /dev/null +++ b/src/colloid_sci/feedback.ts @@ -0,0 +1,14 @@ +/** colloid_sci feedback module — tsb analytics library. */ +export interface ColloidSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface ColloidSciFeedbackResult { values: number[]; converged: boolean; } +export function computeColloidSciFeedback(data: number[], opts: ColloidSciFeedbackOptions = {}): ColloidSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciFeedback }; diff --git a/src/colloid_sci/filtering.ts b/src/colloid_sci/filtering.ts new file mode 100644 index 000000000..6128e924a --- /dev/null +++ b/src/colloid_sci/filtering.ts @@ -0,0 +1,14 @@ +/** colloid_sci filtering module — tsb analytics library. */ +export interface ColloidSciFilteringOptions { tol?: number; maxIter?: number; } +export interface ColloidSciFilteringResult { values: number[]; converged: boolean; } +export function computeColloidSciFiltering(data: number[], opts: ColloidSciFilteringOptions = {}): ColloidSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciFiltering }; diff --git a/src/colloid_sci/fourier.ts b/src/colloid_sci/fourier.ts new file mode 100644 index 000000000..14e3947c2 --- /dev/null +++ b/src/colloid_sci/fourier.ts @@ -0,0 +1,14 @@ +/** colloid_sci fourier module — tsb analytics library. */ +export interface ColloidSciFourierOptions { tol?: number; maxIter?: number; } +export interface ColloidSciFourierResult { values: number[]; converged: boolean; } +export function computeColloidSciFourier(data: number[], opts: ColloidSciFourierOptions = {}): ColloidSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciFourier }; diff --git a/src/colloid_sci/fusion.ts b/src/colloid_sci/fusion.ts new file mode 100644 index 000000000..750edb65b --- /dev/null +++ b/src/colloid_sci/fusion.ts @@ -0,0 +1,14 @@ +/** colloid_sci fusion module — tsb analytics library. */ +export interface ColloidSciFusionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciFusionResult { values: number[]; converged: boolean; } +export function computeColloidSciFusion(data: number[], opts: ColloidSciFusionOptions = {}): ColloidSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciFusion }; diff --git a/src/colloid_sci/generation.ts b/src/colloid_sci/generation.ts new file mode 100644 index 000000000..b87beeb5d --- /dev/null +++ b/src/colloid_sci/generation.ts @@ -0,0 +1,14 @@ +/** colloid_sci generation module — tsb analytics library. */ +export interface ColloidSciGenerationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciGenerationResult { values: number[]; converged: boolean; } +export function computeColloidSciGeneration(data: number[], opts: ColloidSciGenerationOptions = {}): ColloidSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciGeneration }; diff --git a/src/colloid_sci/geometry.ts b/src/colloid_sci/geometry.ts new file mode 100644 index 000000000..932d79497 --- /dev/null +++ b/src/colloid_sci/geometry.ts @@ -0,0 +1,14 @@ +/** colloid_sci geometry module — tsb analytics library. */ +export interface ColloidSciGeometryOptions { tol?: number; maxIter?: number; } +export interface ColloidSciGeometryResult { values: number[]; converged: boolean; } +export function computeColloidSciGeometry(data: number[], opts: ColloidSciGeometryOptions = {}): ColloidSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciGeometry }; diff --git a/src/colloid_sci/gradient.ts b/src/colloid_sci/gradient.ts new file mode 100644 index 000000000..1e82d68dd --- /dev/null +++ b/src/colloid_sci/gradient.ts @@ -0,0 +1,14 @@ +/** colloid_sci gradient module — tsb analytics library. */ +export interface ColloidSciGradientOptions { tol?: number; maxIter?: number; } +export interface ColloidSciGradientResult { values: number[]; converged: boolean; } +export function computeColloidSciGradient(data: number[], opts: ColloidSciGradientOptions = {}): ColloidSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciGradient }; diff --git a/src/colloid_sci/hessian.ts b/src/colloid_sci/hessian.ts new file mode 100644 index 000000000..10f2856ef --- /dev/null +++ b/src/colloid_sci/hessian.ts @@ -0,0 +1,14 @@ +/** colloid_sci hessian module — tsb analytics library. */ +export interface ColloidSciHessianOptions { tol?: number; maxIter?: number; } +export interface ColloidSciHessianResult { values: number[]; converged: boolean; } +export function computeColloidSciHessian(data: number[], opts: ColloidSciHessianOptions = {}): ColloidSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciHessian }; diff --git a/src/colloid_sci/hypothesis.ts b/src/colloid_sci/hypothesis.ts new file mode 100644 index 000000000..3c6cf7fbb --- /dev/null +++ b/src/colloid_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** colloid_sci hypothesis module — tsb analytics library. */ +export interface ColloidSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface ColloidSciHypothesisResult { values: number[]; converged: boolean; } +export function computeColloidSciHypothesis(data: number[], opts: ColloidSciHypothesisOptions = {}): ColloidSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciHypothesis }; diff --git a/src/colloid_sci/inference.ts b/src/colloid_sci/inference.ts new file mode 100644 index 000000000..efc73dae2 --- /dev/null +++ b/src/colloid_sci/inference.ts @@ -0,0 +1,14 @@ +/** colloid_sci inference module — tsb analytics library. */ +export interface ColloidSciInferenceOptions { tol?: number; maxIter?: number; } +export interface ColloidSciInferenceResult { values: number[]; converged: boolean; } +export function computeColloidSciInference(data: number[], opts: ColloidSciInferenceOptions = {}): ColloidSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciInference }; diff --git a/src/colloid_sci/inference2.ts b/src/colloid_sci/inference2.ts new file mode 100644 index 000000000..d50647178 --- /dev/null +++ b/src/colloid_sci/inference2.ts @@ -0,0 +1,14 @@ +/** colloid_sci inference2 module — tsb analytics library. */ +export interface ColloidSciInferenceOptions { tol?: number; maxIter?: number; } +export interface ColloidSciInferenceResult { values: number[]; converged: boolean; } +export function computeColloidSciInference(data: number[], opts: ColloidSciInferenceOptions = {}): ColloidSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciInference }; diff --git a/src/colloid_sci/integral.ts b/src/colloid_sci/integral.ts new file mode 100644 index 000000000..c9709369b --- /dev/null +++ b/src/colloid_sci/integral.ts @@ -0,0 +1,14 @@ +/** colloid_sci integral module — tsb analytics library. */ +export interface ColloidSciIntegralOptions { tol?: number; maxIter?: number; } +export interface ColloidSciIntegralResult { values: number[]; converged: boolean; } +export function computeColloidSciIntegral(data: number[], opts: ColloidSciIntegralOptions = {}): ColloidSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciIntegral }; diff --git a/src/colloid_sci/integration.ts b/src/colloid_sci/integration.ts new file mode 100644 index 000000000..f0e471247 --- /dev/null +++ b/src/colloid_sci/integration.ts @@ -0,0 +1,14 @@ +/** colloid_sci integration module — tsb analytics library. */ +export interface ColloidSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciIntegrationResult { values: number[]; converged: boolean; } +export function computeColloidSciIntegration(data: number[], opts: ColloidSciIntegrationOptions = {}): ColloidSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciIntegration }; diff --git a/src/colloid_sci/interpolation.ts b/src/colloid_sci/interpolation.ts new file mode 100644 index 000000000..3809928c6 --- /dev/null +++ b/src/colloid_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** colloid_sci interpolation module — tsb analytics library. */ +export interface ColloidSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciInterpolationResult { values: number[]; converged: boolean; } +export function computeColloidSciInterpolation(data: number[], opts: ColloidSciInterpolationOptions = {}): ColloidSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciInterpolation }; diff --git a/src/colloid_sci/jacobian.ts b/src/colloid_sci/jacobian.ts new file mode 100644 index 000000000..acc56195a --- /dev/null +++ b/src/colloid_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** colloid_sci jacobian module — tsb analytics library. */ +export interface ColloidSciJacobianOptions { tol?: number; maxIter?: number; } +export interface ColloidSciJacobianResult { values: number[]; converged: boolean; } +export function computeColloidSciJacobian(data: number[], opts: ColloidSciJacobianOptions = {}): ColloidSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciJacobian }; diff --git a/src/colloid_sci/kernel.ts b/src/colloid_sci/kernel.ts new file mode 100644 index 000000000..cc2295f80 --- /dev/null +++ b/src/colloid_sci/kernel.ts @@ -0,0 +1,14 @@ +/** colloid_sci kernel module — tsb analytics library. */ +export interface ColloidSciKernelOptions { tol?: number; maxIter?: number; } +export interface ColloidSciKernelResult { values: number[]; converged: boolean; } +export function computeColloidSciKernel(data: number[], opts: ColloidSciKernelOptions = {}): ColloidSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciKernel }; diff --git a/src/colloid_sci/laplacian.ts b/src/colloid_sci/laplacian.ts new file mode 100644 index 000000000..45f679a25 --- /dev/null +++ b/src/colloid_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** colloid_sci laplacian module — tsb analytics library. */ +export interface ColloidSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface ColloidSciLaplacianResult { values: number[]; converged: boolean; } +export function computeColloidSciLaplacian(data: number[], opts: ColloidSciLaplacianOptions = {}): ColloidSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciLaplacian }; diff --git a/src/colloid_sci/learning.ts b/src/colloid_sci/learning.ts new file mode 100644 index 000000000..ce0281b01 --- /dev/null +++ b/src/colloid_sci/learning.ts @@ -0,0 +1,14 @@ +/** colloid_sci learning module — tsb analytics library. */ +export interface ColloidSciLearningOptions { tol?: number; maxIter?: number; } +export interface ColloidSciLearningResult { values: number[]; converged: boolean; } +export function computeColloidSciLearning(data: number[], opts: ColloidSciLearningOptions = {}): ColloidSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciLearning }; diff --git a/src/colloid_sci/linear.ts b/src/colloid_sci/linear.ts new file mode 100644 index 000000000..fb657ab52 --- /dev/null +++ b/src/colloid_sci/linear.ts @@ -0,0 +1,14 @@ +/** colloid_sci linear module — tsb analytics library. */ +export interface ColloidSciLinearOptions { tol?: number; maxIter?: number; } +export interface ColloidSciLinearResult { values: number[]; converged: boolean; } +export function computeColloidSciLinear(data: number[], opts: ColloidSciLinearOptions = {}): ColloidSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciLinear }; diff --git a/src/colloid_sci/manifold.ts b/src/colloid_sci/manifold.ts new file mode 100644 index 000000000..7afd72053 --- /dev/null +++ b/src/colloid_sci/manifold.ts @@ -0,0 +1,14 @@ +/** colloid_sci manifold module — tsb analytics library. */ +export interface ColloidSciManifoldOptions { tol?: number; maxIter?: number; } +export interface ColloidSciManifoldResult { values: number[]; converged: boolean; } +export function computeColloidSciManifold(data: number[], opts: ColloidSciManifoldOptions = {}): ColloidSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciManifold }; diff --git a/src/colloid_sci/matching.ts b/src/colloid_sci/matching.ts new file mode 100644 index 000000000..99a8ef99a --- /dev/null +++ b/src/colloid_sci/matching.ts @@ -0,0 +1,14 @@ +/** colloid_sci matching module — tsb analytics library. */ +export interface ColloidSciMatchingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciMatchingResult { values: number[]; converged: boolean; } +export function computeColloidSciMatching(data: number[], opts: ColloidSciMatchingOptions = {}): ColloidSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciMatching }; diff --git a/src/colloid_sci/measurement.ts b/src/colloid_sci/measurement.ts new file mode 100644 index 000000000..d659fd7d5 --- /dev/null +++ b/src/colloid_sci/measurement.ts @@ -0,0 +1,14 @@ +/** colloid_sci measurement module — tsb analytics library. */ +export interface ColloidSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface ColloidSciMeasurementResult { values: number[]; converged: boolean; } +export function computeColloidSciMeasurement(data: number[], opts: ColloidSciMeasurementOptions = {}): ColloidSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciMeasurement }; diff --git a/src/colloid_sci/metrics.ts b/src/colloid_sci/metrics.ts new file mode 100644 index 000000000..00ec9a43b --- /dev/null +++ b/src/colloid_sci/metrics.ts @@ -0,0 +1,14 @@ +/** colloid_sci metrics module — tsb analytics library. */ +export interface ColloidSciMetricsOptions { tol?: number; maxIter?: number; } +export interface ColloidSciMetricsResult { values: number[]; converged: boolean; } +export function computeColloidSciMetrics(data: number[], opts: ColloidSciMetricsOptions = {}): ColloidSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciMetrics }; diff --git a/src/colloid_sci/modeling.ts b/src/colloid_sci/modeling.ts new file mode 100644 index 000000000..ceff8f826 --- /dev/null +++ b/src/colloid_sci/modeling.ts @@ -0,0 +1,14 @@ +/** colloid_sci modeling module — tsb analytics library. */ +export interface ColloidSciModelingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciModelingResult { values: number[]; converged: boolean; } +export function computeColloidSciModeling(data: number[], opts: ColloidSciModelingOptions = {}): ColloidSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciModeling }; diff --git a/src/colloid_sci/monitoring.ts b/src/colloid_sci/monitoring.ts new file mode 100644 index 000000000..0cb938a51 --- /dev/null +++ b/src/colloid_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** colloid_sci monitoring module — tsb analytics library. */ +export interface ColloidSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface ColloidSciMonitoringResult { values: number[]; converged: boolean; } +export function computeColloidSciMonitoring(data: number[], opts: ColloidSciMonitoringOptions = {}): ColloidSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciMonitoring }; diff --git a/src/colloid_sci/nonlinear.ts b/src/colloid_sci/nonlinear.ts new file mode 100644 index 000000000..03df1cd62 --- /dev/null +++ b/src/colloid_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** colloid_sci nonlinear module — tsb analytics library. */ +export interface ColloidSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface ColloidSciNonlinearResult { values: number[]; converged: boolean; } +export function computeColloidSciNonlinear(data: number[], opts: ColloidSciNonlinearOptions = {}): ColloidSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciNonlinear }; diff --git a/src/colloid_sci/normalization.ts b/src/colloid_sci/normalization.ts new file mode 100644 index 000000000..2d8bb2a17 --- /dev/null +++ b/src/colloid_sci/normalization.ts @@ -0,0 +1,14 @@ +/** colloid_sci normalization module — tsb analytics library. */ +export interface ColloidSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciNormalizationResult { values: number[]; converged: boolean; } +export function computeColloidSciNormalization(data: number[], opts: ColloidSciNormalizationOptions = {}): ColloidSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciNormalization }; diff --git a/src/colloid_sci/optimization.ts b/src/colloid_sci/optimization.ts new file mode 100644 index 000000000..011d8ac36 --- /dev/null +++ b/src/colloid_sci/optimization.ts @@ -0,0 +1,14 @@ +/** colloid_sci optimization module — tsb analytics library. */ +export interface ColloidSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciOptimizationResult { values: number[]; converged: boolean; } +export function computeColloidSciOptimization(data: number[], opts: ColloidSciOptimizationOptions = {}): ColloidSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciOptimization }; diff --git a/src/colloid_sci/patterns.ts b/src/colloid_sci/patterns.ts new file mode 100644 index 000000000..39092f655 --- /dev/null +++ b/src/colloid_sci/patterns.ts @@ -0,0 +1,14 @@ +/** colloid_sci patterns module — tsb analytics library. */ +export interface ColloidSciPatternsOptions { tol?: number; maxIter?: number; } +export interface ColloidSciPatternsResult { values: number[]; converged: boolean; } +export function computeColloidSciPatterns(data: number[], opts: ColloidSciPatternsOptions = {}): ColloidSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciPatterns }; diff --git a/src/colloid_sci/permutation.ts b/src/colloid_sci/permutation.ts new file mode 100644 index 000000000..f12e17682 --- /dev/null +++ b/src/colloid_sci/permutation.ts @@ -0,0 +1,14 @@ +/** colloid_sci permutation module — tsb analytics library. */ +export interface ColloidSciPermutationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciPermutationResult { values: number[]; converged: boolean; } +export function computeColloidSciPermutation(data: number[], opts: ColloidSciPermutationOptions = {}): ColloidSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciPermutation }; diff --git a/src/colloid_sci/prediction.ts b/src/colloid_sci/prediction.ts new file mode 100644 index 000000000..fc1c637be --- /dev/null +++ b/src/colloid_sci/prediction.ts @@ -0,0 +1,14 @@ +/** colloid_sci prediction module — tsb analytics library. */ +export interface ColloidSciPredictionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciPredictionResult { values: number[]; converged: boolean; } +export function computeColloidSciPrediction(data: number[], opts: ColloidSciPredictionOptions = {}): ColloidSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciPrediction }; diff --git a/src/colloid_sci/processing.ts b/src/colloid_sci/processing.ts new file mode 100644 index 000000000..b5ddf2c6e --- /dev/null +++ b/src/colloid_sci/processing.ts @@ -0,0 +1,14 @@ +/** colloid_sci processing module — tsb analytics library. */ +export interface ColloidSciProcessingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciProcessingResult { values: number[]; converged: boolean; } +export function computeColloidSciProcessing(data: number[], opts: ColloidSciProcessingOptions = {}): ColloidSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciProcessing }; diff --git a/src/colloid_sci/profiling.ts b/src/colloid_sci/profiling.ts new file mode 100644 index 000000000..e9dcd3cab --- /dev/null +++ b/src/colloid_sci/profiling.ts @@ -0,0 +1,14 @@ +/** colloid_sci profiling module — tsb analytics library. */ +export interface ColloidSciProfilingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciProfilingResult { values: number[]; converged: boolean; } +export function computeColloidSciProfiling(data: number[], opts: ColloidSciProfilingOptions = {}): ColloidSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciProfiling }; diff --git a/src/colloid_sci/projection.ts b/src/colloid_sci/projection.ts new file mode 100644 index 000000000..bd1a58a36 --- /dev/null +++ b/src/colloid_sci/projection.ts @@ -0,0 +1,14 @@ +/** colloid_sci projection module — tsb analytics library. */ +export interface ColloidSciProjectionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciProjectionResult { values: number[]; converged: boolean; } +export function computeColloidSciProjection(data: number[], opts: ColloidSciProjectionOptions = {}): ColloidSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciProjection }; diff --git a/src/colloid_sci/ranking.ts b/src/colloid_sci/ranking.ts new file mode 100644 index 000000000..c981fa1a4 --- /dev/null +++ b/src/colloid_sci/ranking.ts @@ -0,0 +1,14 @@ +/** colloid_sci ranking module — tsb analytics library. */ +export interface ColloidSciRankingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciRankingResult { values: number[]; converged: boolean; } +export function computeColloidSciRanking(data: number[], opts: ColloidSciRankingOptions = {}): ColloidSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciRanking }; diff --git a/src/colloid_sci/reconstruction.ts b/src/colloid_sci/reconstruction.ts new file mode 100644 index 000000000..94b3b9865 --- /dev/null +++ b/src/colloid_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** colloid_sci reconstruction module — tsb analytics library. */ +export interface ColloidSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciReconstructionResult { values: number[]; converged: boolean; } +export function computeColloidSciReconstruction(data: number[], opts: ColloidSciReconstructionOptions = {}): ColloidSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciReconstruction }; diff --git a/src/colloid_sci/registration.ts b/src/colloid_sci/registration.ts new file mode 100644 index 000000000..6c32970b2 --- /dev/null +++ b/src/colloid_sci/registration.ts @@ -0,0 +1,14 @@ +/** colloid_sci registration module — tsb analytics library. */ +export interface ColloidSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciRegistrationResult { values: number[]; converged: boolean; } +export function computeColloidSciRegistration(data: number[], opts: ColloidSciRegistrationOptions = {}): ColloidSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciRegistration }; diff --git a/src/colloid_sci/regression.ts b/src/colloid_sci/regression.ts new file mode 100644 index 000000000..22dd7b4a0 --- /dev/null +++ b/src/colloid_sci/regression.ts @@ -0,0 +1,14 @@ +/** colloid_sci regression module — tsb analytics library. */ +export interface ColloidSciRegressionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciRegressionResult { values: number[]; converged: boolean; } +export function computeColloidSciRegression(data: number[], opts: ColloidSciRegressionOptions = {}): ColloidSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciRegression }; diff --git a/src/colloid_sci/regularization.ts b/src/colloid_sci/regularization.ts new file mode 100644 index 000000000..fdc22ac58 --- /dev/null +++ b/src/colloid_sci/regularization.ts @@ -0,0 +1,14 @@ +/** colloid_sci regularization module — tsb analytics library. */ +export interface ColloidSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciRegularizationResult { values: number[]; converged: boolean; } +export function computeColloidSciRegularization(data: number[], opts: ColloidSciRegularizationOptions = {}): ColloidSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciRegularization }; diff --git a/src/colloid_sci/robustness.ts b/src/colloid_sci/robustness.ts new file mode 100644 index 000000000..b096ab424 --- /dev/null +++ b/src/colloid_sci/robustness.ts @@ -0,0 +1,14 @@ +/** colloid_sci robustness module — tsb analytics library. */ +export interface ColloidSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface ColloidSciRobustnessResult { values: number[]; converged: boolean; } +export function computeColloidSciRobustness(data: number[], opts: ColloidSciRobustnessOptions = {}): ColloidSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciRobustness }; diff --git a/src/colloid_sci/sampling.ts b/src/colloid_sci/sampling.ts new file mode 100644 index 000000000..b6cd2da9d --- /dev/null +++ b/src/colloid_sci/sampling.ts @@ -0,0 +1,14 @@ +/** colloid_sci sampling module — tsb analytics library. */ +export interface ColloidSciSamplingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSamplingResult { values: number[]; converged: boolean; } +export function computeColloidSciSampling(data: number[], opts: ColloidSciSamplingOptions = {}): ColloidSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSampling }; diff --git a/src/colloid_sci/sampling2.ts b/src/colloid_sci/sampling2.ts new file mode 100644 index 000000000..f18874ee5 --- /dev/null +++ b/src/colloid_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** colloid_sci sampling2 module — tsb analytics library. */ +export interface ColloidSciSamplingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSamplingResult { values: number[]; converged: boolean; } +export function computeColloidSciSampling(data: number[], opts: ColloidSciSamplingOptions = {}): ColloidSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSampling }; diff --git a/src/colloid_sci/scaling.ts b/src/colloid_sci/scaling.ts new file mode 100644 index 000000000..4620d3cea --- /dev/null +++ b/src/colloid_sci/scaling.ts @@ -0,0 +1,14 @@ +/** colloid_sci scaling module — tsb analytics library. */ +export interface ColloidSciScalingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciScalingResult { values: number[]; converged: boolean; } +export function computeColloidSciScaling(data: number[], opts: ColloidSciScalingOptions = {}): ColloidSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciScaling }; diff --git a/src/colloid_sci/scoring.ts b/src/colloid_sci/scoring.ts new file mode 100644 index 000000000..cd5cbfc0a --- /dev/null +++ b/src/colloid_sci/scoring.ts @@ -0,0 +1,14 @@ +/** colloid_sci scoring module — tsb analytics library. */ +export interface ColloidSciScoringOptions { tol?: number; maxIter?: number; } +export interface ColloidSciScoringResult { values: number[]; converged: boolean; } +export function computeColloidSciScoring(data: number[], opts: ColloidSciScoringOptions = {}): ColloidSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciScoring }; diff --git a/src/colloid_sci/segmentation.ts b/src/colloid_sci/segmentation.ts new file mode 100644 index 000000000..e999cdc90 --- /dev/null +++ b/src/colloid_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** colloid_sci segmentation module — tsb analytics library. */ +export interface ColloidSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSegmentationResult { values: number[]; converged: boolean; } +export function computeColloidSciSegmentation(data: number[], opts: ColloidSciSegmentationOptions = {}): ColloidSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSegmentation }; diff --git a/src/colloid_sci/selection.ts b/src/colloid_sci/selection.ts new file mode 100644 index 000000000..4aabe22c2 --- /dev/null +++ b/src/colloid_sci/selection.ts @@ -0,0 +1,14 @@ +/** colloid_sci selection module — tsb analytics library. */ +export interface ColloidSciSelectionOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSelectionResult { values: number[]; converged: boolean; } +export function computeColloidSciSelection(data: number[], opts: ColloidSciSelectionOptions = {}): ColloidSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSelection }; diff --git a/src/colloid_sci/sensitivity.ts b/src/colloid_sci/sensitivity.ts new file mode 100644 index 000000000..1714cf70f --- /dev/null +++ b/src/colloid_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** colloid_sci sensitivity module — tsb analytics library. */ +export interface ColloidSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSensitivityResult { values: number[]; converged: boolean; } +export function computeColloidSciSensitivity(data: number[], opts: ColloidSciSensitivityOptions = {}): ColloidSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSensitivity }; diff --git a/src/colloid_sci/simulation.ts b/src/colloid_sci/simulation.ts new file mode 100644 index 000000000..e50815c5d --- /dev/null +++ b/src/colloid_sci/simulation.ts @@ -0,0 +1,14 @@ +/** colloid_sci simulation module — tsb analytics library. */ +export interface ColloidSciSimulationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSimulationResult { values: number[]; converged: boolean; } +export function computeColloidSciSimulation(data: number[], opts: ColloidSciSimulationOptions = {}): ColloidSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSimulation }; diff --git a/src/colloid_sci/smoothing.ts b/src/colloid_sci/smoothing.ts new file mode 100644 index 000000000..a09d41ad4 --- /dev/null +++ b/src/colloid_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** colloid_sci smoothing module — tsb analytics library. */ +export interface ColloidSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSmoothingResult { values: number[]; converged: boolean; } +export function computeColloidSciSmoothing(data: number[], opts: ColloidSciSmoothingOptions = {}): ColloidSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSmoothing }; diff --git a/src/colloid_sci/stability.ts b/src/colloid_sci/stability.ts new file mode 100644 index 000000000..c3627c3c8 --- /dev/null +++ b/src/colloid_sci/stability.ts @@ -0,0 +1,14 @@ +/** colloid_sci stability module — tsb analytics library. */ +export interface ColloidSciStabilityOptions { tol?: number; maxIter?: number; } +export interface ColloidSciStabilityResult { values: number[]; converged: boolean; } +export function computeColloidSciStability(data: number[], opts: ColloidSciStabilityOptions = {}): ColloidSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciStability }; diff --git a/src/colloid_sci/stacking.ts b/src/colloid_sci/stacking.ts new file mode 100644 index 000000000..e58a5391d --- /dev/null +++ b/src/colloid_sci/stacking.ts @@ -0,0 +1,14 @@ +/** colloid_sci stacking module — tsb analytics library. */ +export interface ColloidSciStackingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciStackingResult { values: number[]; converged: boolean; } +export function computeColloidSciStacking(data: number[], opts: ColloidSciStackingOptions = {}): ColloidSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciStacking }; diff --git a/src/colloid_sci/standardization.ts b/src/colloid_sci/standardization.ts new file mode 100644 index 000000000..b2f36f16e --- /dev/null +++ b/src/colloid_sci/standardization.ts @@ -0,0 +1,14 @@ +/** colloid_sci standardization module — tsb analytics library. */ +export interface ColloidSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciStandardizationResult { values: number[]; converged: boolean; } +export function computeColloidSciStandardization(data: number[], opts: ColloidSciStandardizationOptions = {}): ColloidSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciStandardization }; diff --git a/src/colloid_sci/static.ts b/src/colloid_sci/static.ts new file mode 100644 index 000000000..98c0f7d5f --- /dev/null +++ b/src/colloid_sci/static.ts @@ -0,0 +1,14 @@ +/** colloid_sci static module — tsb analytics library. */ +export interface ColloidSciStaticOptions { tol?: number; maxIter?: number; } +export interface ColloidSciStaticResult { values: number[]; converged: boolean; } +export function computeColloidSciStatic(data: number[], opts: ColloidSciStaticOptions = {}): ColloidSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciStatic }; diff --git a/src/colloid_sci/stochastic.ts b/src/colloid_sci/stochastic.ts new file mode 100644 index 000000000..f68c0875b --- /dev/null +++ b/src/colloid_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** colloid_sci stochastic module — tsb analytics library. */ +export interface ColloidSciStochasticOptions { tol?: number; maxIter?: number; } +export interface ColloidSciStochasticResult { values: number[]; converged: boolean; } +export function computeColloidSciStochastic(data: number[], opts: ColloidSciStochasticOptions = {}): ColloidSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciStochastic }; diff --git a/src/colloid_sci/synthesis.ts b/src/colloid_sci/synthesis.ts new file mode 100644 index 000000000..e8745c3c6 --- /dev/null +++ b/src/colloid_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** colloid_sci synthesis module — tsb analytics library. */ +export interface ColloidSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface ColloidSciSynthesisResult { values: number[]; converged: boolean; } +export function computeColloidSciSynthesis(data: number[], opts: ColloidSciSynthesisOptions = {}): ColloidSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciSynthesis }; diff --git a/src/colloid_sci/topology.ts b/src/colloid_sci/topology.ts new file mode 100644 index 000000000..19e3633b0 --- /dev/null +++ b/src/colloid_sci/topology.ts @@ -0,0 +1,14 @@ +/** colloid_sci topology module — tsb analytics library. */ +export interface ColloidSciTopologyOptions { tol?: number; maxIter?: number; } +export interface ColloidSciTopologyResult { values: number[]; converged: boolean; } +export function computeColloidSciTopology(data: number[], opts: ColloidSciTopologyOptions = {}): ColloidSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciTopology }; diff --git a/src/colloid_sci/tracking.ts b/src/colloid_sci/tracking.ts new file mode 100644 index 000000000..dbca8d6e7 --- /dev/null +++ b/src/colloid_sci/tracking.ts @@ -0,0 +1,14 @@ +/** colloid_sci tracking module — tsb analytics library. */ +export interface ColloidSciTrackingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciTrackingResult { values: number[]; converged: boolean; } +export function computeColloidSciTracking(data: number[], opts: ColloidSciTrackingOptions = {}): ColloidSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciTracking }; diff --git a/src/colloid_sci/transform.ts b/src/colloid_sci/transform.ts new file mode 100644 index 000000000..e7d576533 --- /dev/null +++ b/src/colloid_sci/transform.ts @@ -0,0 +1,14 @@ +/** colloid_sci transform module — tsb analytics library. */ +export interface ColloidSciTransformOptions { tol?: number; maxIter?: number; } +export interface ColloidSciTransformResult { values: number[]; converged: boolean; } +export function computeColloidSciTransform(data: number[], opts: ColloidSciTransformOptions = {}): ColloidSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciTransform }; diff --git a/src/colloid_sci/uncertainty.ts b/src/colloid_sci/uncertainty.ts new file mode 100644 index 000000000..ebc14bf4f --- /dev/null +++ b/src/colloid_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** colloid_sci uncertainty module — tsb analytics library. */ +export interface ColloidSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface ColloidSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeColloidSciUncertainty(data: number[], opts: ColloidSciUncertaintyOptions = {}): ColloidSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciUncertainty }; diff --git a/src/colloid_sci/validation.ts b/src/colloid_sci/validation.ts new file mode 100644 index 000000000..280996a5b --- /dev/null +++ b/src/colloid_sci/validation.ts @@ -0,0 +1,14 @@ +/** colloid_sci validation module — tsb analytics library. */ +export interface ColloidSciValidationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciValidationResult { values: number[]; converged: boolean; } +export function computeColloidSciValidation(data: number[], opts: ColloidSciValidationOptions = {}): ColloidSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciValidation }; diff --git a/src/colloid_sci/verification.ts b/src/colloid_sci/verification.ts new file mode 100644 index 000000000..001030af0 --- /dev/null +++ b/src/colloid_sci/verification.ts @@ -0,0 +1,14 @@ +/** colloid_sci verification module — tsb analytics library. */ +export interface ColloidSciVerificationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciVerificationResult { values: number[]; converged: boolean; } +export function computeColloidSciVerification(data: number[], opts: ColloidSciVerificationOptions = {}): ColloidSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciVerification }; diff --git a/src/colloid_sci/visualization.ts b/src/colloid_sci/visualization.ts new file mode 100644 index 000000000..9259e7a6b --- /dev/null +++ b/src/colloid_sci/visualization.ts @@ -0,0 +1,14 @@ +/** colloid_sci visualization module — tsb analytics library. */ +export interface ColloidSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface ColloidSciVisualizationResult { values: number[]; converged: boolean; } +export function computeColloidSciVisualization(data: number[], opts: ColloidSciVisualizationOptions = {}): ColloidSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciVisualization }; diff --git a/src/colloid_sci/voting.ts b/src/colloid_sci/voting.ts new file mode 100644 index 000000000..360ca5238 --- /dev/null +++ b/src/colloid_sci/voting.ts @@ -0,0 +1,14 @@ +/** colloid_sci voting module — tsb analytics library. */ +export interface ColloidSciVotingOptions { tol?: number; maxIter?: number; } +export interface ColloidSciVotingResult { values: number[]; converged: boolean; } +export function computeColloidSciVoting(data: number[], opts: ColloidSciVotingOptions = {}): ColloidSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciVoting }; diff --git a/src/colloid_sci/wavelet.ts b/src/colloid_sci/wavelet.ts new file mode 100644 index 000000000..0872c1193 --- /dev/null +++ b/src/colloid_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** colloid_sci wavelet module — tsb analytics library. */ +export interface ColloidSciWaveletOptions { tol?: number; maxIter?: number; } +export interface ColloidSciWaveletResult { values: number[]; converged: boolean; } +export function computeColloidSciWavelet(data: number[], opts: ColloidSciWaveletOptions = {}): ColloidSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeColloidSciWavelet }; diff --git a/src/community_ecology/adaptation.ts b/src/community_ecology/adaptation.ts new file mode 100644 index 000000000..0093c4e9c --- /dev/null +++ b/src/community_ecology/adaptation.ts @@ -0,0 +1,14 @@ +/** community_ecology adaptation module — tsb analytics library. */ +export interface CommunityEcologyAdaptationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyAdaptationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyAdaptation(data: number[], opts: CommunityEcologyAdaptationOptions = {}): CommunityEcologyAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyAdaptation }; diff --git a/src/community_ecology/aggregation.ts b/src/community_ecology/aggregation.ts new file mode 100644 index 000000000..e00c99798 --- /dev/null +++ b/src/community_ecology/aggregation.ts @@ -0,0 +1,14 @@ +/** community_ecology aggregation module — tsb analytics library. */ +export interface CommunityEcologyAggregationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyAggregationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyAggregation(data: number[], opts: CommunityEcologyAggregationOptions = {}): CommunityEcologyAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyAggregation }; diff --git a/src/community_ecology/algebra.ts b/src/community_ecology/algebra.ts new file mode 100644 index 000000000..5dfaab1b9 --- /dev/null +++ b/src/community_ecology/algebra.ts @@ -0,0 +1,14 @@ +/** community_ecology algebra module — tsb analytics library. */ +export interface CommunityEcologyAlgebraOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyAlgebraResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyAlgebra(data: number[], opts: CommunityEcologyAlgebraOptions = {}): CommunityEcologyAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyAlgebra }; diff --git a/src/community_ecology/alignment.ts b/src/community_ecology/alignment.ts new file mode 100644 index 000000000..2934ba028 --- /dev/null +++ b/src/community_ecology/alignment.ts @@ -0,0 +1,14 @@ +/** community_ecology alignment module — tsb analytics library. */ +export interface CommunityEcologyAlignmentOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyAlignmentResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyAlignment(data: number[], opts: CommunityEcologyAlignmentOptions = {}): CommunityEcologyAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyAlignment }; diff --git a/src/community_ecology/analysis.ts b/src/community_ecology/analysis.ts new file mode 100644 index 000000000..4f8794de9 --- /dev/null +++ b/src/community_ecology/analysis.ts @@ -0,0 +1,14 @@ +/** community_ecology analysis module — tsb analytics library. */ +export interface CommunityEcologyAnalysisOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyAnalysisResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyAnalysis(data: number[], opts: CommunityEcologyAnalysisOptions = {}): CommunityEcologyAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyAnalysis }; diff --git a/src/community_ecology/augmentation.ts b/src/community_ecology/augmentation.ts new file mode 100644 index 000000000..0a29127ef --- /dev/null +++ b/src/community_ecology/augmentation.ts @@ -0,0 +1,14 @@ +/** community_ecology augmentation module — tsb analytics library. */ +export interface CommunityEcologyAugmentationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyAugmentationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyAugmentation(data: number[], opts: CommunityEcologyAugmentationOptions = {}): CommunityEcologyAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyAugmentation }; diff --git a/src/community_ecology/bagging.ts b/src/community_ecology/bagging.ts new file mode 100644 index 000000000..48c9cd2df --- /dev/null +++ b/src/community_ecology/bagging.ts @@ -0,0 +1,14 @@ +/** community_ecology bagging module — tsb analytics library. */ +export interface CommunityEcologyBaggingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyBaggingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyBagging(data: number[], opts: CommunityEcologyBaggingOptions = {}): CommunityEcologyBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyBagging }; diff --git a/src/community_ecology/basis.ts b/src/community_ecology/basis.ts new file mode 100644 index 000000000..b23cc4bae --- /dev/null +++ b/src/community_ecology/basis.ts @@ -0,0 +1,14 @@ +/** community_ecology basis module — tsb analytics library. */ +export interface CommunityEcologyBasisOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyBasisResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyBasis(data: number[], opts: CommunityEcologyBasisOptions = {}): CommunityEcologyBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyBasis }; diff --git a/src/community_ecology/benchmarking.ts b/src/community_ecology/benchmarking.ts new file mode 100644 index 000000000..ae2a70a14 --- /dev/null +++ b/src/community_ecology/benchmarking.ts @@ -0,0 +1,14 @@ +/** community_ecology benchmarking module — tsb analytics library. */ +export interface CommunityEcologyBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyBenchmarkingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyBenchmarking(data: number[], opts: CommunityEcologyBenchmarkingOptions = {}): CommunityEcologyBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyBenchmarking }; diff --git a/src/community_ecology/blending.ts b/src/community_ecology/blending.ts new file mode 100644 index 000000000..d206d42d6 --- /dev/null +++ b/src/community_ecology/blending.ts @@ -0,0 +1,14 @@ +/** community_ecology blending module — tsb analytics library. */ +export interface CommunityEcologyBlendingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyBlendingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyBlending(data: number[], opts: CommunityEcologyBlendingOptions = {}): CommunityEcologyBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyBlending }; diff --git a/src/community_ecology/boosting.ts b/src/community_ecology/boosting.ts new file mode 100644 index 000000000..857ceea42 --- /dev/null +++ b/src/community_ecology/boosting.ts @@ -0,0 +1,14 @@ +/** community_ecology boosting module — tsb analytics library. */ +export interface CommunityEcologyBoostingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyBoostingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyBoosting(data: number[], opts: CommunityEcologyBoostingOptions = {}): CommunityEcologyBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyBoosting }; diff --git a/src/community_ecology/bootstrap.ts b/src/community_ecology/bootstrap.ts new file mode 100644 index 000000000..e0afe6a46 --- /dev/null +++ b/src/community_ecology/bootstrap.ts @@ -0,0 +1,14 @@ +/** community_ecology bootstrap module — tsb analytics library. */ +export interface CommunityEcologyBootstrapOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyBootstrapResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyBootstrap(data: number[], opts: CommunityEcologyBootstrapOptions = {}): CommunityEcologyBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyBootstrap }; diff --git a/src/community_ecology/calculus.ts b/src/community_ecology/calculus.ts new file mode 100644 index 000000000..1ce2120c4 --- /dev/null +++ b/src/community_ecology/calculus.ts @@ -0,0 +1,14 @@ +/** community_ecology calculus module — tsb analytics library. */ +export interface CommunityEcologyCalculusOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCalculusResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCalculus(data: number[], opts: CommunityEcologyCalculusOptions = {}): CommunityEcologyCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCalculus }; diff --git a/src/community_ecology/calibration.ts b/src/community_ecology/calibration.ts new file mode 100644 index 000000000..137168df3 --- /dev/null +++ b/src/community_ecology/calibration.ts @@ -0,0 +1,14 @@ +/** community_ecology calibration module — tsb analytics library. */ +export interface CommunityEcologyCalibrationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCalibrationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCalibration(data: number[], opts: CommunityEcologyCalibrationOptions = {}): CommunityEcologyCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCalibration }; diff --git a/src/community_ecology/characterization.ts b/src/community_ecology/characterization.ts new file mode 100644 index 000000000..590cb7a6d --- /dev/null +++ b/src/community_ecology/characterization.ts @@ -0,0 +1,14 @@ +/** community_ecology characterization module — tsb analytics library. */ +export interface CommunityEcologyCharacterizationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCharacterizationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCharacterization(data: number[], opts: CommunityEcologyCharacterizationOptions = {}): CommunityEcologyCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCharacterization }; diff --git a/src/community_ecology/classification.ts b/src/community_ecology/classification.ts new file mode 100644 index 000000000..41ff975d8 --- /dev/null +++ b/src/community_ecology/classification.ts @@ -0,0 +1,14 @@ +/** community_ecology classification module — tsb analytics library. */ +export interface CommunityEcologyClassificationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyClassificationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyClassification(data: number[], opts: CommunityEcologyClassificationOptions = {}): CommunityEcologyClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyClassification }; diff --git a/src/community_ecology/clustering.ts b/src/community_ecology/clustering.ts new file mode 100644 index 000000000..a02849697 --- /dev/null +++ b/src/community_ecology/clustering.ts @@ -0,0 +1,14 @@ +/** community_ecology clustering module — tsb analytics library. */ +export interface CommunityEcologyClusteringOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyClusteringResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyClustering(data: number[], opts: CommunityEcologyClusteringOptions = {}): CommunityEcologyClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyClustering }; diff --git a/src/community_ecology/compression.ts b/src/community_ecology/compression.ts new file mode 100644 index 000000000..257ba3a5f --- /dev/null +++ b/src/community_ecology/compression.ts @@ -0,0 +1,14 @@ +/** community_ecology compression module — tsb analytics library. */ +export interface CommunityEcologyCompressionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCompressionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCompression(data: number[], opts: CommunityEcologyCompressionOptions = {}): CommunityEcologyCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCompression }; diff --git a/src/community_ecology/continuous.ts b/src/community_ecology/continuous.ts new file mode 100644 index 000000000..1af73f975 --- /dev/null +++ b/src/community_ecology/continuous.ts @@ -0,0 +1,14 @@ +/** community_ecology continuous module — tsb analytics library. */ +export interface CommunityEcologyContinuousOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyContinuousResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyContinuous(data: number[], opts: CommunityEcologyContinuousOptions = {}): CommunityEcologyContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyContinuous }; diff --git a/src/community_ecology/control.ts b/src/community_ecology/control.ts new file mode 100644 index 000000000..39a5ebc18 --- /dev/null +++ b/src/community_ecology/control.ts @@ -0,0 +1,14 @@ +/** community_ecology control module — tsb analytics library. */ +export interface CommunityEcologyControlOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyControlResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyControl(data: number[], opts: CommunityEcologyControlOptions = {}): CommunityEcologyControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyControl }; diff --git a/src/community_ecology/convergence.ts b/src/community_ecology/convergence.ts new file mode 100644 index 000000000..7cf1aa4ef --- /dev/null +++ b/src/community_ecology/convergence.ts @@ -0,0 +1,14 @@ +/** community_ecology convergence module — tsb analytics library. */ +export interface CommunityEcologyConvergenceOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyConvergenceResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyConvergence(data: number[], opts: CommunityEcologyConvergenceOptions = {}): CommunityEcologyConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyConvergence }; diff --git a/src/community_ecology/convex.ts b/src/community_ecology/convex.ts new file mode 100644 index 000000000..b654233f0 --- /dev/null +++ b/src/community_ecology/convex.ts @@ -0,0 +1,14 @@ +/** community_ecology convex module — tsb analytics library. */ +export interface CommunityEcologyConvexOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyConvexResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyConvex(data: number[], opts: CommunityEcologyConvexOptions = {}): CommunityEcologyConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyConvex }; diff --git a/src/community_ecology/correlation.ts b/src/community_ecology/correlation.ts new file mode 100644 index 000000000..b6c0aba40 --- /dev/null +++ b/src/community_ecology/correlation.ts @@ -0,0 +1,14 @@ +/** community_ecology correlation module — tsb analytics library. */ +export interface CommunityEcologyCorrelationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCorrelationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCorrelation(data: number[], opts: CommunityEcologyCorrelationOptions = {}): CommunityEcologyCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCorrelation }; diff --git a/src/community_ecology/covariance.ts b/src/community_ecology/covariance.ts new file mode 100644 index 000000000..b3753f1fc --- /dev/null +++ b/src/community_ecology/covariance.ts @@ -0,0 +1,14 @@ +/** community_ecology covariance module — tsb analytics library. */ +export interface CommunityEcologyCovarianceOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCovarianceResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCovariance(data: number[], opts: CommunityEcologyCovarianceOptions = {}): CommunityEcologyCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCovariance }; diff --git a/src/community_ecology/cross_validation.ts b/src/community_ecology/cross_validation.ts new file mode 100644 index 000000000..2dfa50f49 --- /dev/null +++ b/src/community_ecology/cross_validation.ts @@ -0,0 +1,14 @@ +/** community_ecology cross_validation module — tsb analytics library. */ +export interface CommunityEcologyCrossValidationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyCrossValidationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyCrossValidation(data: number[], opts: CommunityEcologyCrossValidationOptions = {}): CommunityEcologyCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyCrossValidation }; diff --git a/src/community_ecology/decoding.ts b/src/community_ecology/decoding.ts new file mode 100644 index 000000000..35d3d4052 --- /dev/null +++ b/src/community_ecology/decoding.ts @@ -0,0 +1,14 @@ +/** community_ecology decoding module — tsb analytics library. */ +export interface CommunityEcologyDecodingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDecodingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDecoding(data: number[], opts: CommunityEcologyDecodingOptions = {}): CommunityEcologyDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDecoding }; diff --git a/src/community_ecology/decomposition.ts b/src/community_ecology/decomposition.ts new file mode 100644 index 000000000..60d5bf7d8 --- /dev/null +++ b/src/community_ecology/decomposition.ts @@ -0,0 +1,14 @@ +/** community_ecology decomposition module — tsb analytics library. */ +export interface CommunityEcologyDecompositionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDecompositionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDecomposition(data: number[], opts: CommunityEcologyDecompositionOptions = {}): CommunityEcologyDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDecomposition }; diff --git a/src/community_ecology/detection.ts b/src/community_ecology/detection.ts new file mode 100644 index 000000000..df8918b46 --- /dev/null +++ b/src/community_ecology/detection.ts @@ -0,0 +1,14 @@ +/** community_ecology detection module — tsb analytics library. */ +export interface CommunityEcologyDetectionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDetectionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDetection(data: number[], opts: CommunityEcologyDetectionOptions = {}): CommunityEcologyDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDetection }; diff --git a/src/community_ecology/deterministic.ts b/src/community_ecology/deterministic.ts new file mode 100644 index 000000000..03973d59a --- /dev/null +++ b/src/community_ecology/deterministic.ts @@ -0,0 +1,14 @@ +/** community_ecology deterministic module — tsb analytics library. */ +export interface CommunityEcologyDeterministicOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDeterministicResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDeterministic(data: number[], opts: CommunityEcologyDeterministicOptions = {}): CommunityEcologyDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDeterministic }; diff --git a/src/community_ecology/diagnostics.ts b/src/community_ecology/diagnostics.ts new file mode 100644 index 000000000..c8b32b5c1 --- /dev/null +++ b/src/community_ecology/diagnostics.ts @@ -0,0 +1,14 @@ +/** community_ecology diagnostics module — tsb analytics library. */ +export interface CommunityEcologyDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDiagnosticsResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDiagnostics(data: number[], opts: CommunityEcologyDiagnosticsOptions = {}): CommunityEcologyDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDiagnostics }; diff --git a/src/community_ecology/differential.ts b/src/community_ecology/differential.ts new file mode 100644 index 000000000..ee7b18985 --- /dev/null +++ b/src/community_ecology/differential.ts @@ -0,0 +1,14 @@ +/** community_ecology differential module — tsb analytics library. */ +export interface CommunityEcologyDifferentialOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDifferentialResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDifferential(data: number[], opts: CommunityEcologyDifferentialOptions = {}): CommunityEcologyDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDifferential }; diff --git a/src/community_ecology/discrete.ts b/src/community_ecology/discrete.ts new file mode 100644 index 000000000..2b12c2ad9 --- /dev/null +++ b/src/community_ecology/discrete.ts @@ -0,0 +1,14 @@ +/** community_ecology discrete module — tsb analytics library. */ +export interface CommunityEcologyDiscreteOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDiscreteResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDiscrete(data: number[], opts: CommunityEcologyDiscreteOptions = {}): CommunityEcologyDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDiscrete }; diff --git a/src/community_ecology/distribution.ts b/src/community_ecology/distribution.ts new file mode 100644 index 000000000..22cb3525d --- /dev/null +++ b/src/community_ecology/distribution.ts @@ -0,0 +1,14 @@ +/** community_ecology distribution module — tsb analytics library. */ +export interface CommunityEcologyDistributionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDistributionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDistribution(data: number[], opts: CommunityEcologyDistributionOptions = {}): CommunityEcologyDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDistribution }; diff --git a/src/community_ecology/dynamic.ts b/src/community_ecology/dynamic.ts new file mode 100644 index 000000000..467beab9e --- /dev/null +++ b/src/community_ecology/dynamic.ts @@ -0,0 +1,14 @@ +/** community_ecology dynamic module — tsb analytics library. */ +export interface CommunityEcologyDynamicOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyDynamicResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyDynamic(data: number[], opts: CommunityEcologyDynamicOptions = {}): CommunityEcologyDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyDynamic }; diff --git a/src/community_ecology/embedding.ts b/src/community_ecology/embedding.ts new file mode 100644 index 000000000..388aa08c0 --- /dev/null +++ b/src/community_ecology/embedding.ts @@ -0,0 +1,14 @@ +/** community_ecology embedding module — tsb analytics library. */ +export interface CommunityEcologyEmbeddingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyEmbeddingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyEmbedding(data: number[], opts: CommunityEcologyEmbeddingOptions = {}): CommunityEcologyEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyEmbedding }; diff --git a/src/community_ecology/encoding.ts b/src/community_ecology/encoding.ts new file mode 100644 index 000000000..c722a6641 --- /dev/null +++ b/src/community_ecology/encoding.ts @@ -0,0 +1,14 @@ +/** community_ecology encoding module — tsb analytics library. */ +export interface CommunityEcologyEncodingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyEncodingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyEncoding(data: number[], opts: CommunityEcologyEncodingOptions = {}): CommunityEcologyEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyEncoding }; diff --git a/src/community_ecology/ensemble.ts b/src/community_ecology/ensemble.ts new file mode 100644 index 000000000..9973e8e92 --- /dev/null +++ b/src/community_ecology/ensemble.ts @@ -0,0 +1,14 @@ +/** community_ecology ensemble module — tsb analytics library. */ +export interface CommunityEcologyEnsembleOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyEnsembleResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyEnsemble(data: number[], opts: CommunityEcologyEnsembleOptions = {}): CommunityEcologyEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyEnsemble }; diff --git a/src/community_ecology/estimation.ts b/src/community_ecology/estimation.ts new file mode 100644 index 000000000..6b46ef0ad --- /dev/null +++ b/src/community_ecology/estimation.ts @@ -0,0 +1,14 @@ +/** community_ecology estimation module — tsb analytics library. */ +export interface CommunityEcologyEstimationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyEstimationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyEstimation(data: number[], opts: CommunityEcologyEstimationOptions = {}): CommunityEcologyEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyEstimation }; diff --git a/src/community_ecology/evaluation.ts b/src/community_ecology/evaluation.ts new file mode 100644 index 000000000..bb8df30eb --- /dev/null +++ b/src/community_ecology/evaluation.ts @@ -0,0 +1,14 @@ +/** community_ecology evaluation module — tsb analytics library. */ +export interface CommunityEcologyEvaluationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyEvaluationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyEvaluation(data: number[], opts: CommunityEcologyEvaluationOptions = {}): CommunityEcologyEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyEvaluation }; diff --git a/src/community_ecology/extrapolation.ts b/src/community_ecology/extrapolation.ts new file mode 100644 index 000000000..e96670c01 --- /dev/null +++ b/src/community_ecology/extrapolation.ts @@ -0,0 +1,14 @@ +/** community_ecology extrapolation module — tsb analytics library. */ +export interface CommunityEcologyExtrapolationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyExtrapolationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyExtrapolation(data: number[], opts: CommunityEcologyExtrapolationOptions = {}): CommunityEcologyExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyExtrapolation }; diff --git a/src/community_ecology/features.ts b/src/community_ecology/features.ts new file mode 100644 index 000000000..90fd74b8c --- /dev/null +++ b/src/community_ecology/features.ts @@ -0,0 +1,14 @@ +/** community_ecology features module — tsb analytics library. */ +export interface CommunityEcologyFeaturesOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyFeaturesResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyFeatures(data: number[], opts: CommunityEcologyFeaturesOptions = {}): CommunityEcologyFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyFeatures }; diff --git a/src/community_ecology/feedback.ts b/src/community_ecology/feedback.ts new file mode 100644 index 000000000..a9d7ea43b --- /dev/null +++ b/src/community_ecology/feedback.ts @@ -0,0 +1,14 @@ +/** community_ecology feedback module — tsb analytics library. */ +export interface CommunityEcologyFeedbackOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyFeedbackResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyFeedback(data: number[], opts: CommunityEcologyFeedbackOptions = {}): CommunityEcologyFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyFeedback }; diff --git a/src/community_ecology/filtering.ts b/src/community_ecology/filtering.ts new file mode 100644 index 000000000..e1fbc91e2 --- /dev/null +++ b/src/community_ecology/filtering.ts @@ -0,0 +1,14 @@ +/** community_ecology filtering module — tsb analytics library. */ +export interface CommunityEcologyFilteringOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyFilteringResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyFiltering(data: number[], opts: CommunityEcologyFilteringOptions = {}): CommunityEcologyFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyFiltering }; diff --git a/src/community_ecology/fourier.ts b/src/community_ecology/fourier.ts new file mode 100644 index 000000000..75cadd98c --- /dev/null +++ b/src/community_ecology/fourier.ts @@ -0,0 +1,14 @@ +/** community_ecology fourier module — tsb analytics library. */ +export interface CommunityEcologyFourierOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyFourierResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyFourier(data: number[], opts: CommunityEcologyFourierOptions = {}): CommunityEcologyFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyFourier }; diff --git a/src/community_ecology/fusion.ts b/src/community_ecology/fusion.ts new file mode 100644 index 000000000..a46bdbc82 --- /dev/null +++ b/src/community_ecology/fusion.ts @@ -0,0 +1,14 @@ +/** community_ecology fusion module — tsb analytics library. */ +export interface CommunityEcologyFusionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyFusionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyFusion(data: number[], opts: CommunityEcologyFusionOptions = {}): CommunityEcologyFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyFusion }; diff --git a/src/community_ecology/generation.ts b/src/community_ecology/generation.ts new file mode 100644 index 000000000..899090cda --- /dev/null +++ b/src/community_ecology/generation.ts @@ -0,0 +1,14 @@ +/** community_ecology generation module — tsb analytics library. */ +export interface CommunityEcologyGenerationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyGenerationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyGeneration(data: number[], opts: CommunityEcologyGenerationOptions = {}): CommunityEcologyGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyGeneration }; diff --git a/src/community_ecology/geometry.ts b/src/community_ecology/geometry.ts new file mode 100644 index 000000000..b03f6ef59 --- /dev/null +++ b/src/community_ecology/geometry.ts @@ -0,0 +1,14 @@ +/** community_ecology geometry module — tsb analytics library. */ +export interface CommunityEcologyGeometryOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyGeometryResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyGeometry(data: number[], opts: CommunityEcologyGeometryOptions = {}): CommunityEcologyGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyGeometry }; diff --git a/src/community_ecology/gradient.ts b/src/community_ecology/gradient.ts new file mode 100644 index 000000000..d601aeb59 --- /dev/null +++ b/src/community_ecology/gradient.ts @@ -0,0 +1,14 @@ +/** community_ecology gradient module — tsb analytics library. */ +export interface CommunityEcologyGradientOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyGradientResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyGradient(data: number[], opts: CommunityEcologyGradientOptions = {}): CommunityEcologyGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyGradient }; diff --git a/src/community_ecology/hessian.ts b/src/community_ecology/hessian.ts new file mode 100644 index 000000000..4fb8cc71d --- /dev/null +++ b/src/community_ecology/hessian.ts @@ -0,0 +1,14 @@ +/** community_ecology hessian module — tsb analytics library. */ +export interface CommunityEcologyHessianOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyHessianResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyHessian(data: number[], opts: CommunityEcologyHessianOptions = {}): CommunityEcologyHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyHessian }; diff --git a/src/community_ecology/hypothesis.ts b/src/community_ecology/hypothesis.ts new file mode 100644 index 000000000..b56c54092 --- /dev/null +++ b/src/community_ecology/hypothesis.ts @@ -0,0 +1,14 @@ +/** community_ecology hypothesis module — tsb analytics library. */ +export interface CommunityEcologyHypothesisOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyHypothesisResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyHypothesis(data: number[], opts: CommunityEcologyHypothesisOptions = {}): CommunityEcologyHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyHypothesis }; diff --git a/src/community_ecology/inference.ts b/src/community_ecology/inference.ts new file mode 100644 index 000000000..119acf505 --- /dev/null +++ b/src/community_ecology/inference.ts @@ -0,0 +1,14 @@ +/** community_ecology inference module — tsb analytics library. */ +export interface CommunityEcologyInferenceOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyInferenceResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyInference(data: number[], opts: CommunityEcologyInferenceOptions = {}): CommunityEcologyInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyInference }; diff --git a/src/community_ecology/inference2.ts b/src/community_ecology/inference2.ts new file mode 100644 index 000000000..5d5da5828 --- /dev/null +++ b/src/community_ecology/inference2.ts @@ -0,0 +1,14 @@ +/** community_ecology inference2 module — tsb analytics library. */ +export interface CommunityEcologyInferenceOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyInferenceResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyInference(data: number[], opts: CommunityEcologyInferenceOptions = {}): CommunityEcologyInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyInference }; diff --git a/src/community_ecology/integral.ts b/src/community_ecology/integral.ts new file mode 100644 index 000000000..f322b8afb --- /dev/null +++ b/src/community_ecology/integral.ts @@ -0,0 +1,14 @@ +/** community_ecology integral module — tsb analytics library. */ +export interface CommunityEcologyIntegralOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyIntegralResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyIntegral(data: number[], opts: CommunityEcologyIntegralOptions = {}): CommunityEcologyIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyIntegral }; diff --git a/src/community_ecology/integration.ts b/src/community_ecology/integration.ts new file mode 100644 index 000000000..db7a66bc6 --- /dev/null +++ b/src/community_ecology/integration.ts @@ -0,0 +1,14 @@ +/** community_ecology integration module — tsb analytics library. */ +export interface CommunityEcologyIntegrationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyIntegrationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyIntegration(data: number[], opts: CommunityEcologyIntegrationOptions = {}): CommunityEcologyIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyIntegration }; diff --git a/src/community_ecology/interpolation.ts b/src/community_ecology/interpolation.ts new file mode 100644 index 000000000..97c733416 --- /dev/null +++ b/src/community_ecology/interpolation.ts @@ -0,0 +1,14 @@ +/** community_ecology interpolation module — tsb analytics library. */ +export interface CommunityEcologyInterpolationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyInterpolationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyInterpolation(data: number[], opts: CommunityEcologyInterpolationOptions = {}): CommunityEcologyInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyInterpolation }; diff --git a/src/community_ecology/jacobian.ts b/src/community_ecology/jacobian.ts new file mode 100644 index 000000000..7aa7bcaad --- /dev/null +++ b/src/community_ecology/jacobian.ts @@ -0,0 +1,14 @@ +/** community_ecology jacobian module — tsb analytics library. */ +export interface CommunityEcologyJacobianOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyJacobianResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyJacobian(data: number[], opts: CommunityEcologyJacobianOptions = {}): CommunityEcologyJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyJacobian }; diff --git a/src/community_ecology/kernel.ts b/src/community_ecology/kernel.ts new file mode 100644 index 000000000..bdb5a6f36 --- /dev/null +++ b/src/community_ecology/kernel.ts @@ -0,0 +1,14 @@ +/** community_ecology kernel module — tsb analytics library. */ +export interface CommunityEcologyKernelOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyKernelResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyKernel(data: number[], opts: CommunityEcologyKernelOptions = {}): CommunityEcologyKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyKernel }; diff --git a/src/community_ecology/laplacian.ts b/src/community_ecology/laplacian.ts new file mode 100644 index 000000000..506b218bf --- /dev/null +++ b/src/community_ecology/laplacian.ts @@ -0,0 +1,14 @@ +/** community_ecology laplacian module — tsb analytics library. */ +export interface CommunityEcologyLaplacianOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyLaplacianResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyLaplacian(data: number[], opts: CommunityEcologyLaplacianOptions = {}): CommunityEcologyLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyLaplacian }; diff --git a/src/community_ecology/learning.ts b/src/community_ecology/learning.ts new file mode 100644 index 000000000..4cd4f0cce --- /dev/null +++ b/src/community_ecology/learning.ts @@ -0,0 +1,14 @@ +/** community_ecology learning module — tsb analytics library. */ +export interface CommunityEcologyLearningOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyLearningResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyLearning(data: number[], opts: CommunityEcologyLearningOptions = {}): CommunityEcologyLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyLearning }; diff --git a/src/community_ecology/linear.ts b/src/community_ecology/linear.ts new file mode 100644 index 000000000..fcec6fc76 --- /dev/null +++ b/src/community_ecology/linear.ts @@ -0,0 +1,14 @@ +/** community_ecology linear module — tsb analytics library. */ +export interface CommunityEcologyLinearOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyLinearResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyLinear(data: number[], opts: CommunityEcologyLinearOptions = {}): CommunityEcologyLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyLinear }; diff --git a/src/community_ecology/manifold.ts b/src/community_ecology/manifold.ts new file mode 100644 index 000000000..8a33603b9 --- /dev/null +++ b/src/community_ecology/manifold.ts @@ -0,0 +1,14 @@ +/** community_ecology manifold module — tsb analytics library. */ +export interface CommunityEcologyManifoldOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyManifoldResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyManifold(data: number[], opts: CommunityEcologyManifoldOptions = {}): CommunityEcologyManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyManifold }; diff --git a/src/community_ecology/matching.ts b/src/community_ecology/matching.ts new file mode 100644 index 000000000..3e3389c35 --- /dev/null +++ b/src/community_ecology/matching.ts @@ -0,0 +1,14 @@ +/** community_ecology matching module — tsb analytics library. */ +export interface CommunityEcologyMatchingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyMatchingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyMatching(data: number[], opts: CommunityEcologyMatchingOptions = {}): CommunityEcologyMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyMatching }; diff --git a/src/community_ecology/measurement.ts b/src/community_ecology/measurement.ts new file mode 100644 index 000000000..b03a0c3ce --- /dev/null +++ b/src/community_ecology/measurement.ts @@ -0,0 +1,14 @@ +/** community_ecology measurement module — tsb analytics library. */ +export interface CommunityEcologyMeasurementOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyMeasurementResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyMeasurement(data: number[], opts: CommunityEcologyMeasurementOptions = {}): CommunityEcologyMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyMeasurement }; diff --git a/src/community_ecology/metrics.ts b/src/community_ecology/metrics.ts new file mode 100644 index 000000000..503a3eea7 --- /dev/null +++ b/src/community_ecology/metrics.ts @@ -0,0 +1,14 @@ +/** community_ecology metrics module — tsb analytics library. */ +export interface CommunityEcologyMetricsOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyMetricsResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyMetrics(data: number[], opts: CommunityEcologyMetricsOptions = {}): CommunityEcologyMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyMetrics }; diff --git a/src/community_ecology/modeling.ts b/src/community_ecology/modeling.ts new file mode 100644 index 000000000..6c5dda090 --- /dev/null +++ b/src/community_ecology/modeling.ts @@ -0,0 +1,14 @@ +/** community_ecology modeling module — tsb analytics library. */ +export interface CommunityEcologyModelingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyModelingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyModeling(data: number[], opts: CommunityEcologyModelingOptions = {}): CommunityEcologyModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyModeling }; diff --git a/src/community_ecology/monitoring.ts b/src/community_ecology/monitoring.ts new file mode 100644 index 000000000..8026f738f --- /dev/null +++ b/src/community_ecology/monitoring.ts @@ -0,0 +1,14 @@ +/** community_ecology monitoring module — tsb analytics library. */ +export interface CommunityEcologyMonitoringOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyMonitoringResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyMonitoring(data: number[], opts: CommunityEcologyMonitoringOptions = {}): CommunityEcologyMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyMonitoring }; diff --git a/src/community_ecology/nonlinear.ts b/src/community_ecology/nonlinear.ts new file mode 100644 index 000000000..ce5d53a05 --- /dev/null +++ b/src/community_ecology/nonlinear.ts @@ -0,0 +1,14 @@ +/** community_ecology nonlinear module — tsb analytics library. */ +export interface CommunityEcologyNonlinearOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyNonlinearResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyNonlinear(data: number[], opts: CommunityEcologyNonlinearOptions = {}): CommunityEcologyNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyNonlinear }; diff --git a/src/community_ecology/normalization.ts b/src/community_ecology/normalization.ts new file mode 100644 index 000000000..33e70f03d --- /dev/null +++ b/src/community_ecology/normalization.ts @@ -0,0 +1,14 @@ +/** community_ecology normalization module — tsb analytics library. */ +export interface CommunityEcologyNormalizationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyNormalizationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyNormalization(data: number[], opts: CommunityEcologyNormalizationOptions = {}): CommunityEcologyNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyNormalization }; diff --git a/src/community_ecology/optimization.ts b/src/community_ecology/optimization.ts new file mode 100644 index 000000000..678994141 --- /dev/null +++ b/src/community_ecology/optimization.ts @@ -0,0 +1,14 @@ +/** community_ecology optimization module — tsb analytics library. */ +export interface CommunityEcologyOptimizationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyOptimizationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyOptimization(data: number[], opts: CommunityEcologyOptimizationOptions = {}): CommunityEcologyOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyOptimization }; diff --git a/src/community_ecology/patterns.ts b/src/community_ecology/patterns.ts new file mode 100644 index 000000000..c8dde378e --- /dev/null +++ b/src/community_ecology/patterns.ts @@ -0,0 +1,14 @@ +/** community_ecology patterns module — tsb analytics library. */ +export interface CommunityEcologyPatternsOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyPatternsResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyPatterns(data: number[], opts: CommunityEcologyPatternsOptions = {}): CommunityEcologyPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyPatterns }; diff --git a/src/community_ecology/permutation.ts b/src/community_ecology/permutation.ts new file mode 100644 index 000000000..c40cd4903 --- /dev/null +++ b/src/community_ecology/permutation.ts @@ -0,0 +1,14 @@ +/** community_ecology permutation module — tsb analytics library. */ +export interface CommunityEcologyPermutationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyPermutationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyPermutation(data: number[], opts: CommunityEcologyPermutationOptions = {}): CommunityEcologyPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyPermutation }; diff --git a/src/community_ecology/prediction.ts b/src/community_ecology/prediction.ts new file mode 100644 index 000000000..e4e973e54 --- /dev/null +++ b/src/community_ecology/prediction.ts @@ -0,0 +1,14 @@ +/** community_ecology prediction module — tsb analytics library. */ +export interface CommunityEcologyPredictionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyPredictionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyPrediction(data: number[], opts: CommunityEcologyPredictionOptions = {}): CommunityEcologyPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyPrediction }; diff --git a/src/community_ecology/processing.ts b/src/community_ecology/processing.ts new file mode 100644 index 000000000..d0c63ecb6 --- /dev/null +++ b/src/community_ecology/processing.ts @@ -0,0 +1,14 @@ +/** community_ecology processing module — tsb analytics library. */ +export interface CommunityEcologyProcessingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyProcessingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyProcessing(data: number[], opts: CommunityEcologyProcessingOptions = {}): CommunityEcologyProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyProcessing }; diff --git a/src/community_ecology/profiling.ts b/src/community_ecology/profiling.ts new file mode 100644 index 000000000..5b7549d32 --- /dev/null +++ b/src/community_ecology/profiling.ts @@ -0,0 +1,14 @@ +/** community_ecology profiling module — tsb analytics library. */ +export interface CommunityEcologyProfilingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyProfilingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyProfiling(data: number[], opts: CommunityEcologyProfilingOptions = {}): CommunityEcologyProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyProfiling }; diff --git a/src/community_ecology/projection.ts b/src/community_ecology/projection.ts new file mode 100644 index 000000000..93feaa372 --- /dev/null +++ b/src/community_ecology/projection.ts @@ -0,0 +1,14 @@ +/** community_ecology projection module — tsb analytics library. */ +export interface CommunityEcologyProjectionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyProjectionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyProjection(data: number[], opts: CommunityEcologyProjectionOptions = {}): CommunityEcologyProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyProjection }; diff --git a/src/community_ecology/ranking.ts b/src/community_ecology/ranking.ts new file mode 100644 index 000000000..ead94661e --- /dev/null +++ b/src/community_ecology/ranking.ts @@ -0,0 +1,14 @@ +/** community_ecology ranking module — tsb analytics library. */ +export interface CommunityEcologyRankingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyRankingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyRanking(data: number[], opts: CommunityEcologyRankingOptions = {}): CommunityEcologyRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyRanking }; diff --git a/src/community_ecology/reconstruction.ts b/src/community_ecology/reconstruction.ts new file mode 100644 index 000000000..f2a85cd38 --- /dev/null +++ b/src/community_ecology/reconstruction.ts @@ -0,0 +1,14 @@ +/** community_ecology reconstruction module — tsb analytics library. */ +export interface CommunityEcologyReconstructionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyReconstructionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyReconstruction(data: number[], opts: CommunityEcologyReconstructionOptions = {}): CommunityEcologyReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyReconstruction }; diff --git a/src/community_ecology/registration.ts b/src/community_ecology/registration.ts new file mode 100644 index 000000000..08847eb66 --- /dev/null +++ b/src/community_ecology/registration.ts @@ -0,0 +1,14 @@ +/** community_ecology registration module — tsb analytics library. */ +export interface CommunityEcologyRegistrationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyRegistrationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyRegistration(data: number[], opts: CommunityEcologyRegistrationOptions = {}): CommunityEcologyRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyRegistration }; diff --git a/src/community_ecology/regression.ts b/src/community_ecology/regression.ts new file mode 100644 index 000000000..4f5bd6f70 --- /dev/null +++ b/src/community_ecology/regression.ts @@ -0,0 +1,14 @@ +/** community_ecology regression module — tsb analytics library. */ +export interface CommunityEcologyRegressionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyRegressionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyRegression(data: number[], opts: CommunityEcologyRegressionOptions = {}): CommunityEcologyRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyRegression }; diff --git a/src/community_ecology/regularization.ts b/src/community_ecology/regularization.ts new file mode 100644 index 000000000..3bdb91094 --- /dev/null +++ b/src/community_ecology/regularization.ts @@ -0,0 +1,14 @@ +/** community_ecology regularization module — tsb analytics library. */ +export interface CommunityEcologyRegularizationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyRegularizationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyRegularization(data: number[], opts: CommunityEcologyRegularizationOptions = {}): CommunityEcologyRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyRegularization }; diff --git a/src/community_ecology/robustness.ts b/src/community_ecology/robustness.ts new file mode 100644 index 000000000..43a7c0479 --- /dev/null +++ b/src/community_ecology/robustness.ts @@ -0,0 +1,14 @@ +/** community_ecology robustness module — tsb analytics library. */ +export interface CommunityEcologyRobustnessOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyRobustnessResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyRobustness(data: number[], opts: CommunityEcologyRobustnessOptions = {}): CommunityEcologyRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyRobustness }; diff --git a/src/community_ecology/sampling.ts b/src/community_ecology/sampling.ts new file mode 100644 index 000000000..e9543aa9b --- /dev/null +++ b/src/community_ecology/sampling.ts @@ -0,0 +1,14 @@ +/** community_ecology sampling module — tsb analytics library. */ +export interface CommunityEcologySamplingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySamplingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySampling(data: number[], opts: CommunityEcologySamplingOptions = {}): CommunityEcologySamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySampling }; diff --git a/src/community_ecology/sampling2.ts b/src/community_ecology/sampling2.ts new file mode 100644 index 000000000..941f9f010 --- /dev/null +++ b/src/community_ecology/sampling2.ts @@ -0,0 +1,14 @@ +/** community_ecology sampling2 module — tsb analytics library. */ +export interface CommunityEcologySamplingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySamplingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySampling(data: number[], opts: CommunityEcologySamplingOptions = {}): CommunityEcologySamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySampling }; diff --git a/src/community_ecology/scaling.ts b/src/community_ecology/scaling.ts new file mode 100644 index 000000000..225b053c7 --- /dev/null +++ b/src/community_ecology/scaling.ts @@ -0,0 +1,14 @@ +/** community_ecology scaling module — tsb analytics library. */ +export interface CommunityEcologyScalingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyScalingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyScaling(data: number[], opts: CommunityEcologyScalingOptions = {}): CommunityEcologyScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyScaling }; diff --git a/src/community_ecology/scoring.ts b/src/community_ecology/scoring.ts new file mode 100644 index 000000000..09ab302a8 --- /dev/null +++ b/src/community_ecology/scoring.ts @@ -0,0 +1,14 @@ +/** community_ecology scoring module — tsb analytics library. */ +export interface CommunityEcologyScoringOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyScoringResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyScoring(data: number[], opts: CommunityEcologyScoringOptions = {}): CommunityEcologyScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyScoring }; diff --git a/src/community_ecology/segmentation.ts b/src/community_ecology/segmentation.ts new file mode 100644 index 000000000..5e0c0ae59 --- /dev/null +++ b/src/community_ecology/segmentation.ts @@ -0,0 +1,14 @@ +/** community_ecology segmentation module — tsb analytics library. */ +export interface CommunityEcologySegmentationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySegmentationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySegmentation(data: number[], opts: CommunityEcologySegmentationOptions = {}): CommunityEcologySegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySegmentation }; diff --git a/src/community_ecology/selection.ts b/src/community_ecology/selection.ts new file mode 100644 index 000000000..b2ea106bd --- /dev/null +++ b/src/community_ecology/selection.ts @@ -0,0 +1,14 @@ +/** community_ecology selection module — tsb analytics library. */ +export interface CommunityEcologySelectionOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySelectionResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySelection(data: number[], opts: CommunityEcologySelectionOptions = {}): CommunityEcologySelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySelection }; diff --git a/src/community_ecology/sensitivity.ts b/src/community_ecology/sensitivity.ts new file mode 100644 index 000000000..c7d49d342 --- /dev/null +++ b/src/community_ecology/sensitivity.ts @@ -0,0 +1,14 @@ +/** community_ecology sensitivity module — tsb analytics library. */ +export interface CommunityEcologySensitivityOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySensitivityResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySensitivity(data: number[], opts: CommunityEcologySensitivityOptions = {}): CommunityEcologySensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySensitivity }; diff --git a/src/community_ecology/simulation.ts b/src/community_ecology/simulation.ts new file mode 100644 index 000000000..a836340de --- /dev/null +++ b/src/community_ecology/simulation.ts @@ -0,0 +1,14 @@ +/** community_ecology simulation module — tsb analytics library. */ +export interface CommunityEcologySimulationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySimulationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySimulation(data: number[], opts: CommunityEcologySimulationOptions = {}): CommunityEcologySimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySimulation }; diff --git a/src/community_ecology/smoothing.ts b/src/community_ecology/smoothing.ts new file mode 100644 index 000000000..3509a8583 --- /dev/null +++ b/src/community_ecology/smoothing.ts @@ -0,0 +1,14 @@ +/** community_ecology smoothing module — tsb analytics library. */ +export interface CommunityEcologySmoothingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySmoothingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySmoothing(data: number[], opts: CommunityEcologySmoothingOptions = {}): CommunityEcologySmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySmoothing }; diff --git a/src/community_ecology/stability.ts b/src/community_ecology/stability.ts new file mode 100644 index 000000000..bd5ca957f --- /dev/null +++ b/src/community_ecology/stability.ts @@ -0,0 +1,14 @@ +/** community_ecology stability module — tsb analytics library. */ +export interface CommunityEcologyStabilityOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyStabilityResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyStability(data: number[], opts: CommunityEcologyStabilityOptions = {}): CommunityEcologyStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyStability }; diff --git a/src/community_ecology/stacking.ts b/src/community_ecology/stacking.ts new file mode 100644 index 000000000..426ae0f0f --- /dev/null +++ b/src/community_ecology/stacking.ts @@ -0,0 +1,14 @@ +/** community_ecology stacking module — tsb analytics library. */ +export interface CommunityEcologyStackingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyStackingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyStacking(data: number[], opts: CommunityEcologyStackingOptions = {}): CommunityEcologyStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyStacking }; diff --git a/src/community_ecology/standardization.ts b/src/community_ecology/standardization.ts new file mode 100644 index 000000000..edbff40a6 --- /dev/null +++ b/src/community_ecology/standardization.ts @@ -0,0 +1,14 @@ +/** community_ecology standardization module — tsb analytics library. */ +export interface CommunityEcologyStandardizationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyStandardizationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyStandardization(data: number[], opts: CommunityEcologyStandardizationOptions = {}): CommunityEcologyStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyStandardization }; diff --git a/src/community_ecology/static.ts b/src/community_ecology/static.ts new file mode 100644 index 000000000..83a702c5d --- /dev/null +++ b/src/community_ecology/static.ts @@ -0,0 +1,14 @@ +/** community_ecology static module — tsb analytics library. */ +export interface CommunityEcologyStaticOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyStaticResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyStatic(data: number[], opts: CommunityEcologyStaticOptions = {}): CommunityEcologyStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyStatic }; diff --git a/src/community_ecology/stochastic.ts b/src/community_ecology/stochastic.ts new file mode 100644 index 000000000..c13508744 --- /dev/null +++ b/src/community_ecology/stochastic.ts @@ -0,0 +1,14 @@ +/** community_ecology stochastic module — tsb analytics library. */ +export interface CommunityEcologyStochasticOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyStochasticResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyStochastic(data: number[], opts: CommunityEcologyStochasticOptions = {}): CommunityEcologyStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyStochastic }; diff --git a/src/community_ecology/synthesis.ts b/src/community_ecology/synthesis.ts new file mode 100644 index 000000000..2807a1106 --- /dev/null +++ b/src/community_ecology/synthesis.ts @@ -0,0 +1,14 @@ +/** community_ecology synthesis module — tsb analytics library. */ +export interface CommunityEcologySynthesisOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologySynthesisResult { values: number[]; converged: boolean; } +export function computeCommunityEcologySynthesis(data: number[], opts: CommunityEcologySynthesisOptions = {}): CommunityEcologySynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologySynthesis }; diff --git a/src/community_ecology/topology.ts b/src/community_ecology/topology.ts new file mode 100644 index 000000000..80adb1ca9 --- /dev/null +++ b/src/community_ecology/topology.ts @@ -0,0 +1,14 @@ +/** community_ecology topology module — tsb analytics library. */ +export interface CommunityEcologyTopologyOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyTopologyResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyTopology(data: number[], opts: CommunityEcologyTopologyOptions = {}): CommunityEcologyTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyTopology }; diff --git a/src/community_ecology/tracking.ts b/src/community_ecology/tracking.ts new file mode 100644 index 000000000..1700843d2 --- /dev/null +++ b/src/community_ecology/tracking.ts @@ -0,0 +1,14 @@ +/** community_ecology tracking module — tsb analytics library. */ +export interface CommunityEcologyTrackingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyTrackingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyTracking(data: number[], opts: CommunityEcologyTrackingOptions = {}): CommunityEcologyTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyTracking }; diff --git a/src/community_ecology/transform.ts b/src/community_ecology/transform.ts new file mode 100644 index 000000000..c5c115aaa --- /dev/null +++ b/src/community_ecology/transform.ts @@ -0,0 +1,14 @@ +/** community_ecology transform module — tsb analytics library. */ +export interface CommunityEcologyTransformOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyTransformResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyTransform(data: number[], opts: CommunityEcologyTransformOptions = {}): CommunityEcologyTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyTransform }; diff --git a/src/community_ecology/uncertainty.ts b/src/community_ecology/uncertainty.ts new file mode 100644 index 000000000..3666a2ecf --- /dev/null +++ b/src/community_ecology/uncertainty.ts @@ -0,0 +1,14 @@ +/** community_ecology uncertainty module — tsb analytics library. */ +export interface CommunityEcologyUncertaintyOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyUncertaintyResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyUncertainty(data: number[], opts: CommunityEcologyUncertaintyOptions = {}): CommunityEcologyUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyUncertainty }; diff --git a/src/community_ecology/validation.ts b/src/community_ecology/validation.ts new file mode 100644 index 000000000..87aeab428 --- /dev/null +++ b/src/community_ecology/validation.ts @@ -0,0 +1,14 @@ +/** community_ecology validation module — tsb analytics library. */ +export interface CommunityEcologyValidationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyValidationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyValidation(data: number[], opts: CommunityEcologyValidationOptions = {}): CommunityEcologyValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyValidation }; diff --git a/src/community_ecology/verification.ts b/src/community_ecology/verification.ts new file mode 100644 index 000000000..7e3fae976 --- /dev/null +++ b/src/community_ecology/verification.ts @@ -0,0 +1,14 @@ +/** community_ecology verification module — tsb analytics library. */ +export interface CommunityEcologyVerificationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyVerificationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyVerification(data: number[], opts: CommunityEcologyVerificationOptions = {}): CommunityEcologyVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyVerification }; diff --git a/src/community_ecology/visualization.ts b/src/community_ecology/visualization.ts new file mode 100644 index 000000000..a49c068c5 --- /dev/null +++ b/src/community_ecology/visualization.ts @@ -0,0 +1,14 @@ +/** community_ecology visualization module — tsb analytics library. */ +export interface CommunityEcologyVisualizationOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyVisualizationResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyVisualization(data: number[], opts: CommunityEcologyVisualizationOptions = {}): CommunityEcologyVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyVisualization }; diff --git a/src/community_ecology/voting.ts b/src/community_ecology/voting.ts new file mode 100644 index 000000000..362afb744 --- /dev/null +++ b/src/community_ecology/voting.ts @@ -0,0 +1,14 @@ +/** community_ecology voting module — tsb analytics library. */ +export interface CommunityEcologyVotingOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyVotingResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyVoting(data: number[], opts: CommunityEcologyVotingOptions = {}): CommunityEcologyVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyVoting }; diff --git a/src/community_ecology/wavelet.ts b/src/community_ecology/wavelet.ts new file mode 100644 index 000000000..640685310 --- /dev/null +++ b/src/community_ecology/wavelet.ts @@ -0,0 +1,14 @@ +/** community_ecology wavelet module — tsb analytics library. */ +export interface CommunityEcologyWaveletOptions { tol?: number; maxIter?: number; } +export interface CommunityEcologyWaveletResult { values: number[]; converged: boolean; } +export function computeCommunityEcologyWavelet(data: number[], opts: CommunityEcologyWaveletOptions = {}): CommunityEcologyWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCommunityEcologyWavelet }; diff --git a/src/composite_materials/adaptation.ts b/src/composite_materials/adaptation.ts new file mode 100644 index 000000000..40296732c --- /dev/null +++ b/src/composite_materials/adaptation.ts @@ -0,0 +1,14 @@ +/** composite_materials adaptation module — tsb analytics library. */ +export interface CompositeMaterialsAdaptationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsAdaptationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsAdaptation(data: number[], opts: CompositeMaterialsAdaptationOptions = {}): CompositeMaterialsAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsAdaptation }; diff --git a/src/composite_materials/aggregation.ts b/src/composite_materials/aggregation.ts new file mode 100644 index 000000000..06bcfc096 --- /dev/null +++ b/src/composite_materials/aggregation.ts @@ -0,0 +1,14 @@ +/** composite_materials aggregation module — tsb analytics library. */ +export interface CompositeMaterialsAggregationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsAggregationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsAggregation(data: number[], opts: CompositeMaterialsAggregationOptions = {}): CompositeMaterialsAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsAggregation }; diff --git a/src/composite_materials/algebra.ts b/src/composite_materials/algebra.ts new file mode 100644 index 000000000..1919b97e8 --- /dev/null +++ b/src/composite_materials/algebra.ts @@ -0,0 +1,14 @@ +/** composite_materials algebra module — tsb analytics library. */ +export interface CompositeMaterialsAlgebraOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsAlgebraResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsAlgebra(data: number[], opts: CompositeMaterialsAlgebraOptions = {}): CompositeMaterialsAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsAlgebra }; diff --git a/src/composite_materials/alignment.ts b/src/composite_materials/alignment.ts new file mode 100644 index 000000000..020b1b085 --- /dev/null +++ b/src/composite_materials/alignment.ts @@ -0,0 +1,14 @@ +/** composite_materials alignment module — tsb analytics library. */ +export interface CompositeMaterialsAlignmentOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsAlignmentResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsAlignment(data: number[], opts: CompositeMaterialsAlignmentOptions = {}): CompositeMaterialsAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsAlignment }; diff --git a/src/composite_materials/analysis.ts b/src/composite_materials/analysis.ts new file mode 100644 index 000000000..5c543d6f5 --- /dev/null +++ b/src/composite_materials/analysis.ts @@ -0,0 +1,14 @@ +/** composite_materials analysis module — tsb analytics library. */ +export interface CompositeMaterialsAnalysisOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsAnalysisResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsAnalysis(data: number[], opts: CompositeMaterialsAnalysisOptions = {}): CompositeMaterialsAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsAnalysis }; diff --git a/src/composite_materials/augmentation.ts b/src/composite_materials/augmentation.ts new file mode 100644 index 000000000..81e12c1ef --- /dev/null +++ b/src/composite_materials/augmentation.ts @@ -0,0 +1,14 @@ +/** composite_materials augmentation module — tsb analytics library. */ +export interface CompositeMaterialsAugmentationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsAugmentationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsAugmentation(data: number[], opts: CompositeMaterialsAugmentationOptions = {}): CompositeMaterialsAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsAugmentation }; diff --git a/src/composite_materials/bagging.ts b/src/composite_materials/bagging.ts new file mode 100644 index 000000000..d21918995 --- /dev/null +++ b/src/composite_materials/bagging.ts @@ -0,0 +1,14 @@ +/** composite_materials bagging module — tsb analytics library. */ +export interface CompositeMaterialsBaggingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsBaggingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsBagging(data: number[], opts: CompositeMaterialsBaggingOptions = {}): CompositeMaterialsBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsBagging }; diff --git a/src/composite_materials/basis.ts b/src/composite_materials/basis.ts new file mode 100644 index 000000000..4d75b26b6 --- /dev/null +++ b/src/composite_materials/basis.ts @@ -0,0 +1,14 @@ +/** composite_materials basis module — tsb analytics library. */ +export interface CompositeMaterialsBasisOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsBasisResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsBasis(data: number[], opts: CompositeMaterialsBasisOptions = {}): CompositeMaterialsBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsBasis }; diff --git a/src/composite_materials/benchmarking.ts b/src/composite_materials/benchmarking.ts new file mode 100644 index 000000000..9443b2230 --- /dev/null +++ b/src/composite_materials/benchmarking.ts @@ -0,0 +1,14 @@ +/** composite_materials benchmarking module — tsb analytics library. */ +export interface CompositeMaterialsBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsBenchmarkingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsBenchmarking(data: number[], opts: CompositeMaterialsBenchmarkingOptions = {}): CompositeMaterialsBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsBenchmarking }; diff --git a/src/composite_materials/blending.ts b/src/composite_materials/blending.ts new file mode 100644 index 000000000..63fdd934e --- /dev/null +++ b/src/composite_materials/blending.ts @@ -0,0 +1,14 @@ +/** composite_materials blending module — tsb analytics library. */ +export interface CompositeMaterialsBlendingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsBlendingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsBlending(data: number[], opts: CompositeMaterialsBlendingOptions = {}): CompositeMaterialsBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsBlending }; diff --git a/src/composite_materials/boosting.ts b/src/composite_materials/boosting.ts new file mode 100644 index 000000000..90795a0c3 --- /dev/null +++ b/src/composite_materials/boosting.ts @@ -0,0 +1,14 @@ +/** composite_materials boosting module — tsb analytics library. */ +export interface CompositeMaterialsBoostingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsBoostingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsBoosting(data: number[], opts: CompositeMaterialsBoostingOptions = {}): CompositeMaterialsBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsBoosting }; diff --git a/src/composite_materials/bootstrap.ts b/src/composite_materials/bootstrap.ts new file mode 100644 index 000000000..42235faaa --- /dev/null +++ b/src/composite_materials/bootstrap.ts @@ -0,0 +1,14 @@ +/** composite_materials bootstrap module — tsb analytics library. */ +export interface CompositeMaterialsBootstrapOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsBootstrapResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsBootstrap(data: number[], opts: CompositeMaterialsBootstrapOptions = {}): CompositeMaterialsBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsBootstrap }; diff --git a/src/composite_materials/calculus.ts b/src/composite_materials/calculus.ts new file mode 100644 index 000000000..8416cbfab --- /dev/null +++ b/src/composite_materials/calculus.ts @@ -0,0 +1,14 @@ +/** composite_materials calculus module — tsb analytics library. */ +export interface CompositeMaterialsCalculusOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCalculusResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCalculus(data: number[], opts: CompositeMaterialsCalculusOptions = {}): CompositeMaterialsCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCalculus }; diff --git a/src/composite_materials/calibration.ts b/src/composite_materials/calibration.ts new file mode 100644 index 000000000..6b9edded1 --- /dev/null +++ b/src/composite_materials/calibration.ts @@ -0,0 +1,14 @@ +/** composite_materials calibration module — tsb analytics library. */ +export interface CompositeMaterialsCalibrationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCalibrationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCalibration(data: number[], opts: CompositeMaterialsCalibrationOptions = {}): CompositeMaterialsCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCalibration }; diff --git a/src/composite_materials/characterization.ts b/src/composite_materials/characterization.ts new file mode 100644 index 000000000..451c35e94 --- /dev/null +++ b/src/composite_materials/characterization.ts @@ -0,0 +1,14 @@ +/** composite_materials characterization module — tsb analytics library. */ +export interface CompositeMaterialsCharacterizationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCharacterizationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCharacterization(data: number[], opts: CompositeMaterialsCharacterizationOptions = {}): CompositeMaterialsCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCharacterization }; diff --git a/src/composite_materials/classification.ts b/src/composite_materials/classification.ts new file mode 100644 index 000000000..252637deb --- /dev/null +++ b/src/composite_materials/classification.ts @@ -0,0 +1,14 @@ +/** composite_materials classification module — tsb analytics library. */ +export interface CompositeMaterialsClassificationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsClassificationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsClassification(data: number[], opts: CompositeMaterialsClassificationOptions = {}): CompositeMaterialsClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsClassification }; diff --git a/src/composite_materials/clustering.ts b/src/composite_materials/clustering.ts new file mode 100644 index 000000000..d13c48751 --- /dev/null +++ b/src/composite_materials/clustering.ts @@ -0,0 +1,14 @@ +/** composite_materials clustering module — tsb analytics library. */ +export interface CompositeMaterialsClusteringOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsClusteringResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsClustering(data: number[], opts: CompositeMaterialsClusteringOptions = {}): CompositeMaterialsClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsClustering }; diff --git a/src/composite_materials/compression.ts b/src/composite_materials/compression.ts new file mode 100644 index 000000000..0d7152f10 --- /dev/null +++ b/src/composite_materials/compression.ts @@ -0,0 +1,14 @@ +/** composite_materials compression module — tsb analytics library. */ +export interface CompositeMaterialsCompressionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCompressionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCompression(data: number[], opts: CompositeMaterialsCompressionOptions = {}): CompositeMaterialsCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCompression }; diff --git a/src/composite_materials/continuous.ts b/src/composite_materials/continuous.ts new file mode 100644 index 000000000..255035392 --- /dev/null +++ b/src/composite_materials/continuous.ts @@ -0,0 +1,14 @@ +/** composite_materials continuous module — tsb analytics library. */ +export interface CompositeMaterialsContinuousOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsContinuousResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsContinuous(data: number[], opts: CompositeMaterialsContinuousOptions = {}): CompositeMaterialsContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsContinuous }; diff --git a/src/composite_materials/control.ts b/src/composite_materials/control.ts new file mode 100644 index 000000000..e92d881e3 --- /dev/null +++ b/src/composite_materials/control.ts @@ -0,0 +1,14 @@ +/** composite_materials control module — tsb analytics library. */ +export interface CompositeMaterialsControlOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsControlResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsControl(data: number[], opts: CompositeMaterialsControlOptions = {}): CompositeMaterialsControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsControl }; diff --git a/src/composite_materials/convergence.ts b/src/composite_materials/convergence.ts new file mode 100644 index 000000000..c7f5619aa --- /dev/null +++ b/src/composite_materials/convergence.ts @@ -0,0 +1,14 @@ +/** composite_materials convergence module — tsb analytics library. */ +export interface CompositeMaterialsConvergenceOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsConvergenceResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsConvergence(data: number[], opts: CompositeMaterialsConvergenceOptions = {}): CompositeMaterialsConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsConvergence }; diff --git a/src/composite_materials/convex.ts b/src/composite_materials/convex.ts new file mode 100644 index 000000000..3878aca92 --- /dev/null +++ b/src/composite_materials/convex.ts @@ -0,0 +1,14 @@ +/** composite_materials convex module — tsb analytics library. */ +export interface CompositeMaterialsConvexOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsConvexResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsConvex(data: number[], opts: CompositeMaterialsConvexOptions = {}): CompositeMaterialsConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsConvex }; diff --git a/src/composite_materials/correlation.ts b/src/composite_materials/correlation.ts new file mode 100644 index 000000000..80f71a16a --- /dev/null +++ b/src/composite_materials/correlation.ts @@ -0,0 +1,14 @@ +/** composite_materials correlation module — tsb analytics library. */ +export interface CompositeMaterialsCorrelationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCorrelationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCorrelation(data: number[], opts: CompositeMaterialsCorrelationOptions = {}): CompositeMaterialsCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCorrelation }; diff --git a/src/composite_materials/covariance.ts b/src/composite_materials/covariance.ts new file mode 100644 index 000000000..cc4aa381f --- /dev/null +++ b/src/composite_materials/covariance.ts @@ -0,0 +1,14 @@ +/** composite_materials covariance module — tsb analytics library. */ +export interface CompositeMaterialsCovarianceOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCovarianceResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCovariance(data: number[], opts: CompositeMaterialsCovarianceOptions = {}): CompositeMaterialsCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCovariance }; diff --git a/src/composite_materials/cross_validation.ts b/src/composite_materials/cross_validation.ts new file mode 100644 index 000000000..7dc1e63de --- /dev/null +++ b/src/composite_materials/cross_validation.ts @@ -0,0 +1,14 @@ +/** composite_materials cross_validation module — tsb analytics library. */ +export interface CompositeMaterialsCrossValidationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsCrossValidationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsCrossValidation(data: number[], opts: CompositeMaterialsCrossValidationOptions = {}): CompositeMaterialsCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsCrossValidation }; diff --git a/src/composite_materials/decoding.ts b/src/composite_materials/decoding.ts new file mode 100644 index 000000000..61983571b --- /dev/null +++ b/src/composite_materials/decoding.ts @@ -0,0 +1,14 @@ +/** composite_materials decoding module — tsb analytics library. */ +export interface CompositeMaterialsDecodingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDecodingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDecoding(data: number[], opts: CompositeMaterialsDecodingOptions = {}): CompositeMaterialsDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDecoding }; diff --git a/src/composite_materials/decomposition.ts b/src/composite_materials/decomposition.ts new file mode 100644 index 000000000..aa93866d8 --- /dev/null +++ b/src/composite_materials/decomposition.ts @@ -0,0 +1,14 @@ +/** composite_materials decomposition module — tsb analytics library. */ +export interface CompositeMaterialsDecompositionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDecompositionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDecomposition(data: number[], opts: CompositeMaterialsDecompositionOptions = {}): CompositeMaterialsDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDecomposition }; diff --git a/src/composite_materials/detection.ts b/src/composite_materials/detection.ts new file mode 100644 index 000000000..c0ef77cc5 --- /dev/null +++ b/src/composite_materials/detection.ts @@ -0,0 +1,14 @@ +/** composite_materials detection module — tsb analytics library. */ +export interface CompositeMaterialsDetectionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDetectionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDetection(data: number[], opts: CompositeMaterialsDetectionOptions = {}): CompositeMaterialsDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDetection }; diff --git a/src/composite_materials/deterministic.ts b/src/composite_materials/deterministic.ts new file mode 100644 index 000000000..0093a43b9 --- /dev/null +++ b/src/composite_materials/deterministic.ts @@ -0,0 +1,14 @@ +/** composite_materials deterministic module — tsb analytics library. */ +export interface CompositeMaterialsDeterministicOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDeterministicResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDeterministic(data: number[], opts: CompositeMaterialsDeterministicOptions = {}): CompositeMaterialsDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDeterministic }; diff --git a/src/composite_materials/diagnostics.ts b/src/composite_materials/diagnostics.ts new file mode 100644 index 000000000..be2a8af86 --- /dev/null +++ b/src/composite_materials/diagnostics.ts @@ -0,0 +1,14 @@ +/** composite_materials diagnostics module — tsb analytics library. */ +export interface CompositeMaterialsDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDiagnosticsResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDiagnostics(data: number[], opts: CompositeMaterialsDiagnosticsOptions = {}): CompositeMaterialsDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDiagnostics }; diff --git a/src/composite_materials/differential.ts b/src/composite_materials/differential.ts new file mode 100644 index 000000000..d6497b0cd --- /dev/null +++ b/src/composite_materials/differential.ts @@ -0,0 +1,14 @@ +/** composite_materials differential module — tsb analytics library. */ +export interface CompositeMaterialsDifferentialOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDifferentialResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDifferential(data: number[], opts: CompositeMaterialsDifferentialOptions = {}): CompositeMaterialsDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDifferential }; diff --git a/src/composite_materials/discrete.ts b/src/composite_materials/discrete.ts new file mode 100644 index 000000000..3f59eb304 --- /dev/null +++ b/src/composite_materials/discrete.ts @@ -0,0 +1,14 @@ +/** composite_materials discrete module — tsb analytics library. */ +export interface CompositeMaterialsDiscreteOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDiscreteResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDiscrete(data: number[], opts: CompositeMaterialsDiscreteOptions = {}): CompositeMaterialsDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDiscrete }; diff --git a/src/composite_materials/distribution.ts b/src/composite_materials/distribution.ts new file mode 100644 index 000000000..943bcfe64 --- /dev/null +++ b/src/composite_materials/distribution.ts @@ -0,0 +1,14 @@ +/** composite_materials distribution module — tsb analytics library. */ +export interface CompositeMaterialsDistributionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDistributionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDistribution(data: number[], opts: CompositeMaterialsDistributionOptions = {}): CompositeMaterialsDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDistribution }; diff --git a/src/composite_materials/dynamic.ts b/src/composite_materials/dynamic.ts new file mode 100644 index 000000000..816b56c8a --- /dev/null +++ b/src/composite_materials/dynamic.ts @@ -0,0 +1,14 @@ +/** composite_materials dynamic module — tsb analytics library. */ +export interface CompositeMaterialsDynamicOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsDynamicResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsDynamic(data: number[], opts: CompositeMaterialsDynamicOptions = {}): CompositeMaterialsDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsDynamic }; diff --git a/src/composite_materials/embedding.ts b/src/composite_materials/embedding.ts new file mode 100644 index 000000000..445537222 --- /dev/null +++ b/src/composite_materials/embedding.ts @@ -0,0 +1,14 @@ +/** composite_materials embedding module — tsb analytics library. */ +export interface CompositeMaterialsEmbeddingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsEmbeddingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsEmbedding(data: number[], opts: CompositeMaterialsEmbeddingOptions = {}): CompositeMaterialsEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsEmbedding }; diff --git a/src/composite_materials/encoding.ts b/src/composite_materials/encoding.ts new file mode 100644 index 000000000..15f4f45e5 --- /dev/null +++ b/src/composite_materials/encoding.ts @@ -0,0 +1,14 @@ +/** composite_materials encoding module — tsb analytics library. */ +export interface CompositeMaterialsEncodingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsEncodingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsEncoding(data: number[], opts: CompositeMaterialsEncodingOptions = {}): CompositeMaterialsEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsEncoding }; diff --git a/src/composite_materials/ensemble.ts b/src/composite_materials/ensemble.ts new file mode 100644 index 000000000..fffd02a9f --- /dev/null +++ b/src/composite_materials/ensemble.ts @@ -0,0 +1,14 @@ +/** composite_materials ensemble module — tsb analytics library. */ +export interface CompositeMaterialsEnsembleOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsEnsembleResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsEnsemble(data: number[], opts: CompositeMaterialsEnsembleOptions = {}): CompositeMaterialsEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsEnsemble }; diff --git a/src/composite_materials/estimation.ts b/src/composite_materials/estimation.ts new file mode 100644 index 000000000..8c6e55f3f --- /dev/null +++ b/src/composite_materials/estimation.ts @@ -0,0 +1,14 @@ +/** composite_materials estimation module — tsb analytics library. */ +export interface CompositeMaterialsEstimationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsEstimationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsEstimation(data: number[], opts: CompositeMaterialsEstimationOptions = {}): CompositeMaterialsEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsEstimation }; diff --git a/src/composite_materials/evaluation.ts b/src/composite_materials/evaluation.ts new file mode 100644 index 000000000..3764034d8 --- /dev/null +++ b/src/composite_materials/evaluation.ts @@ -0,0 +1,14 @@ +/** composite_materials evaluation module — tsb analytics library. */ +export interface CompositeMaterialsEvaluationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsEvaluationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsEvaluation(data: number[], opts: CompositeMaterialsEvaluationOptions = {}): CompositeMaterialsEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsEvaluation }; diff --git a/src/composite_materials/extrapolation.ts b/src/composite_materials/extrapolation.ts new file mode 100644 index 000000000..48e92199c --- /dev/null +++ b/src/composite_materials/extrapolation.ts @@ -0,0 +1,14 @@ +/** composite_materials extrapolation module — tsb analytics library. */ +export interface CompositeMaterialsExtrapolationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsExtrapolationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsExtrapolation(data: number[], opts: CompositeMaterialsExtrapolationOptions = {}): CompositeMaterialsExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsExtrapolation }; diff --git a/src/composite_materials/features.ts b/src/composite_materials/features.ts new file mode 100644 index 000000000..aba5a1c9a --- /dev/null +++ b/src/composite_materials/features.ts @@ -0,0 +1,14 @@ +/** composite_materials features module — tsb analytics library. */ +export interface CompositeMaterialsFeaturesOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsFeaturesResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsFeatures(data: number[], opts: CompositeMaterialsFeaturesOptions = {}): CompositeMaterialsFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsFeatures }; diff --git a/src/composite_materials/feedback.ts b/src/composite_materials/feedback.ts new file mode 100644 index 000000000..181d8463f --- /dev/null +++ b/src/composite_materials/feedback.ts @@ -0,0 +1,14 @@ +/** composite_materials feedback module — tsb analytics library. */ +export interface CompositeMaterialsFeedbackOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsFeedbackResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsFeedback(data: number[], opts: CompositeMaterialsFeedbackOptions = {}): CompositeMaterialsFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsFeedback }; diff --git a/src/composite_materials/filtering.ts b/src/composite_materials/filtering.ts new file mode 100644 index 000000000..35b61ebe2 --- /dev/null +++ b/src/composite_materials/filtering.ts @@ -0,0 +1,14 @@ +/** composite_materials filtering module — tsb analytics library. */ +export interface CompositeMaterialsFilteringOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsFilteringResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsFiltering(data: number[], opts: CompositeMaterialsFilteringOptions = {}): CompositeMaterialsFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsFiltering }; diff --git a/src/composite_materials/fourier.ts b/src/composite_materials/fourier.ts new file mode 100644 index 000000000..976b01faa --- /dev/null +++ b/src/composite_materials/fourier.ts @@ -0,0 +1,14 @@ +/** composite_materials fourier module — tsb analytics library. */ +export interface CompositeMaterialsFourierOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsFourierResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsFourier(data: number[], opts: CompositeMaterialsFourierOptions = {}): CompositeMaterialsFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsFourier }; diff --git a/src/composite_materials/fusion.ts b/src/composite_materials/fusion.ts new file mode 100644 index 000000000..70b6ca5e7 --- /dev/null +++ b/src/composite_materials/fusion.ts @@ -0,0 +1,14 @@ +/** composite_materials fusion module — tsb analytics library. */ +export interface CompositeMaterialsFusionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsFusionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsFusion(data: number[], opts: CompositeMaterialsFusionOptions = {}): CompositeMaterialsFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsFusion }; diff --git a/src/composite_materials/generation.ts b/src/composite_materials/generation.ts new file mode 100644 index 000000000..8d795d317 --- /dev/null +++ b/src/composite_materials/generation.ts @@ -0,0 +1,14 @@ +/** composite_materials generation module — tsb analytics library. */ +export interface CompositeMaterialsGenerationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsGenerationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsGeneration(data: number[], opts: CompositeMaterialsGenerationOptions = {}): CompositeMaterialsGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsGeneration }; diff --git a/src/composite_materials/geometry.ts b/src/composite_materials/geometry.ts new file mode 100644 index 000000000..5c24279a8 --- /dev/null +++ b/src/composite_materials/geometry.ts @@ -0,0 +1,14 @@ +/** composite_materials geometry module — tsb analytics library. */ +export interface CompositeMaterialsGeometryOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsGeometryResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsGeometry(data: number[], opts: CompositeMaterialsGeometryOptions = {}): CompositeMaterialsGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsGeometry }; diff --git a/src/composite_materials/gradient.ts b/src/composite_materials/gradient.ts new file mode 100644 index 000000000..e2ea04070 --- /dev/null +++ b/src/composite_materials/gradient.ts @@ -0,0 +1,14 @@ +/** composite_materials gradient module — tsb analytics library. */ +export interface CompositeMaterialsGradientOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsGradientResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsGradient(data: number[], opts: CompositeMaterialsGradientOptions = {}): CompositeMaterialsGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsGradient }; diff --git a/src/composite_materials/hessian.ts b/src/composite_materials/hessian.ts new file mode 100644 index 000000000..c58e366a1 --- /dev/null +++ b/src/composite_materials/hessian.ts @@ -0,0 +1,14 @@ +/** composite_materials hessian module — tsb analytics library. */ +export interface CompositeMaterialsHessianOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsHessianResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsHessian(data: number[], opts: CompositeMaterialsHessianOptions = {}): CompositeMaterialsHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsHessian }; diff --git a/src/composite_materials/hypothesis.ts b/src/composite_materials/hypothesis.ts new file mode 100644 index 000000000..8f3d0624d --- /dev/null +++ b/src/composite_materials/hypothesis.ts @@ -0,0 +1,14 @@ +/** composite_materials hypothesis module — tsb analytics library. */ +export interface CompositeMaterialsHypothesisOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsHypothesisResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsHypothesis(data: number[], opts: CompositeMaterialsHypothesisOptions = {}): CompositeMaterialsHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsHypothesis }; diff --git a/src/composite_materials/inference.ts b/src/composite_materials/inference.ts new file mode 100644 index 000000000..1f3ae512b --- /dev/null +++ b/src/composite_materials/inference.ts @@ -0,0 +1,14 @@ +/** composite_materials inference module — tsb analytics library. */ +export interface CompositeMaterialsInferenceOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsInferenceResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsInference(data: number[], opts: CompositeMaterialsInferenceOptions = {}): CompositeMaterialsInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsInference }; diff --git a/src/composite_materials/inference2.ts b/src/composite_materials/inference2.ts new file mode 100644 index 000000000..3fca1db9e --- /dev/null +++ b/src/composite_materials/inference2.ts @@ -0,0 +1,14 @@ +/** composite_materials inference2 module — tsb analytics library. */ +export interface CompositeMaterialsInferenceOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsInferenceResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsInference(data: number[], opts: CompositeMaterialsInferenceOptions = {}): CompositeMaterialsInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsInference }; diff --git a/src/composite_materials/integral.ts b/src/composite_materials/integral.ts new file mode 100644 index 000000000..e29f912b1 --- /dev/null +++ b/src/composite_materials/integral.ts @@ -0,0 +1,14 @@ +/** composite_materials integral module — tsb analytics library. */ +export interface CompositeMaterialsIntegralOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsIntegralResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsIntegral(data: number[], opts: CompositeMaterialsIntegralOptions = {}): CompositeMaterialsIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsIntegral }; diff --git a/src/composite_materials/integration.ts b/src/composite_materials/integration.ts new file mode 100644 index 000000000..9a556fd7d --- /dev/null +++ b/src/composite_materials/integration.ts @@ -0,0 +1,14 @@ +/** composite_materials integration module — tsb analytics library. */ +export interface CompositeMaterialsIntegrationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsIntegrationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsIntegration(data: number[], opts: CompositeMaterialsIntegrationOptions = {}): CompositeMaterialsIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsIntegration }; diff --git a/src/composite_materials/interpolation.ts b/src/composite_materials/interpolation.ts new file mode 100644 index 000000000..0e9de65a5 --- /dev/null +++ b/src/composite_materials/interpolation.ts @@ -0,0 +1,14 @@ +/** composite_materials interpolation module — tsb analytics library. */ +export interface CompositeMaterialsInterpolationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsInterpolationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsInterpolation(data: number[], opts: CompositeMaterialsInterpolationOptions = {}): CompositeMaterialsInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsInterpolation }; diff --git a/src/composite_materials/jacobian.ts b/src/composite_materials/jacobian.ts new file mode 100644 index 000000000..2b97f422c --- /dev/null +++ b/src/composite_materials/jacobian.ts @@ -0,0 +1,14 @@ +/** composite_materials jacobian module — tsb analytics library. */ +export interface CompositeMaterialsJacobianOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsJacobianResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsJacobian(data: number[], opts: CompositeMaterialsJacobianOptions = {}): CompositeMaterialsJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsJacobian }; diff --git a/src/composite_materials/kernel.ts b/src/composite_materials/kernel.ts new file mode 100644 index 000000000..f29802dd2 --- /dev/null +++ b/src/composite_materials/kernel.ts @@ -0,0 +1,14 @@ +/** composite_materials kernel module — tsb analytics library. */ +export interface CompositeMaterialsKernelOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsKernelResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsKernel(data: number[], opts: CompositeMaterialsKernelOptions = {}): CompositeMaterialsKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsKernel }; diff --git a/src/composite_materials/laplacian.ts b/src/composite_materials/laplacian.ts new file mode 100644 index 000000000..3a70828a7 --- /dev/null +++ b/src/composite_materials/laplacian.ts @@ -0,0 +1,14 @@ +/** composite_materials laplacian module — tsb analytics library. */ +export interface CompositeMaterialsLaplacianOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsLaplacianResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsLaplacian(data: number[], opts: CompositeMaterialsLaplacianOptions = {}): CompositeMaterialsLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsLaplacian }; diff --git a/src/composite_materials/learning.ts b/src/composite_materials/learning.ts new file mode 100644 index 000000000..11b6dc01e --- /dev/null +++ b/src/composite_materials/learning.ts @@ -0,0 +1,14 @@ +/** composite_materials learning module — tsb analytics library. */ +export interface CompositeMaterialsLearningOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsLearningResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsLearning(data: number[], opts: CompositeMaterialsLearningOptions = {}): CompositeMaterialsLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsLearning }; diff --git a/src/composite_materials/linear.ts b/src/composite_materials/linear.ts new file mode 100644 index 000000000..1cc7412a5 --- /dev/null +++ b/src/composite_materials/linear.ts @@ -0,0 +1,14 @@ +/** composite_materials linear module — tsb analytics library. */ +export interface CompositeMaterialsLinearOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsLinearResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsLinear(data: number[], opts: CompositeMaterialsLinearOptions = {}): CompositeMaterialsLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsLinear }; diff --git a/src/composite_materials/manifold.ts b/src/composite_materials/manifold.ts new file mode 100644 index 000000000..b34eb88da --- /dev/null +++ b/src/composite_materials/manifold.ts @@ -0,0 +1,14 @@ +/** composite_materials manifold module — tsb analytics library. */ +export interface CompositeMaterialsManifoldOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsManifoldResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsManifold(data: number[], opts: CompositeMaterialsManifoldOptions = {}): CompositeMaterialsManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsManifold }; diff --git a/src/composite_materials/matching.ts b/src/composite_materials/matching.ts new file mode 100644 index 000000000..6d3061c69 --- /dev/null +++ b/src/composite_materials/matching.ts @@ -0,0 +1,14 @@ +/** composite_materials matching module — tsb analytics library. */ +export interface CompositeMaterialsMatchingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsMatchingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsMatching(data: number[], opts: CompositeMaterialsMatchingOptions = {}): CompositeMaterialsMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsMatching }; diff --git a/src/composite_materials/measurement.ts b/src/composite_materials/measurement.ts new file mode 100644 index 000000000..3e80e889c --- /dev/null +++ b/src/composite_materials/measurement.ts @@ -0,0 +1,14 @@ +/** composite_materials measurement module — tsb analytics library. */ +export interface CompositeMaterialsMeasurementOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsMeasurementResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsMeasurement(data: number[], opts: CompositeMaterialsMeasurementOptions = {}): CompositeMaterialsMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsMeasurement }; diff --git a/src/composite_materials/metrics.ts b/src/composite_materials/metrics.ts new file mode 100644 index 000000000..8e76bc6fa --- /dev/null +++ b/src/composite_materials/metrics.ts @@ -0,0 +1,14 @@ +/** composite_materials metrics module — tsb analytics library. */ +export interface CompositeMaterialsMetricsOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsMetricsResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsMetrics(data: number[], opts: CompositeMaterialsMetricsOptions = {}): CompositeMaterialsMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsMetrics }; diff --git a/src/composite_materials/modeling.ts b/src/composite_materials/modeling.ts new file mode 100644 index 000000000..3e2fe625d --- /dev/null +++ b/src/composite_materials/modeling.ts @@ -0,0 +1,14 @@ +/** composite_materials modeling module — tsb analytics library. */ +export interface CompositeMaterialsModelingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsModelingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsModeling(data: number[], opts: CompositeMaterialsModelingOptions = {}): CompositeMaterialsModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsModeling }; diff --git a/src/composite_materials/monitoring.ts b/src/composite_materials/monitoring.ts new file mode 100644 index 000000000..a068dc839 --- /dev/null +++ b/src/composite_materials/monitoring.ts @@ -0,0 +1,14 @@ +/** composite_materials monitoring module — tsb analytics library. */ +export interface CompositeMaterialsMonitoringOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsMonitoringResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsMonitoring(data: number[], opts: CompositeMaterialsMonitoringOptions = {}): CompositeMaterialsMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsMonitoring }; diff --git a/src/composite_materials/nonlinear.ts b/src/composite_materials/nonlinear.ts new file mode 100644 index 000000000..9b4061abb --- /dev/null +++ b/src/composite_materials/nonlinear.ts @@ -0,0 +1,14 @@ +/** composite_materials nonlinear module — tsb analytics library. */ +export interface CompositeMaterialsNonlinearOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsNonlinearResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsNonlinear(data: number[], opts: CompositeMaterialsNonlinearOptions = {}): CompositeMaterialsNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsNonlinear }; diff --git a/src/composite_materials/normalization.ts b/src/composite_materials/normalization.ts new file mode 100644 index 000000000..06f70b884 --- /dev/null +++ b/src/composite_materials/normalization.ts @@ -0,0 +1,14 @@ +/** composite_materials normalization module — tsb analytics library. */ +export interface CompositeMaterialsNormalizationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsNormalizationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsNormalization(data: number[], opts: CompositeMaterialsNormalizationOptions = {}): CompositeMaterialsNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsNormalization }; diff --git a/src/composite_materials/optimization.ts b/src/composite_materials/optimization.ts new file mode 100644 index 000000000..53cc18432 --- /dev/null +++ b/src/composite_materials/optimization.ts @@ -0,0 +1,14 @@ +/** composite_materials optimization module — tsb analytics library. */ +export interface CompositeMaterialsOptimizationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsOptimizationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsOptimization(data: number[], opts: CompositeMaterialsOptimizationOptions = {}): CompositeMaterialsOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsOptimization }; diff --git a/src/composite_materials/patterns.ts b/src/composite_materials/patterns.ts new file mode 100644 index 000000000..405cab987 --- /dev/null +++ b/src/composite_materials/patterns.ts @@ -0,0 +1,14 @@ +/** composite_materials patterns module — tsb analytics library. */ +export interface CompositeMaterialsPatternsOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsPatternsResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsPatterns(data: number[], opts: CompositeMaterialsPatternsOptions = {}): CompositeMaterialsPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsPatterns }; diff --git a/src/composite_materials/permutation.ts b/src/composite_materials/permutation.ts new file mode 100644 index 000000000..0df7970bd --- /dev/null +++ b/src/composite_materials/permutation.ts @@ -0,0 +1,14 @@ +/** composite_materials permutation module — tsb analytics library. */ +export interface CompositeMaterialsPermutationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsPermutationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsPermutation(data: number[], opts: CompositeMaterialsPermutationOptions = {}): CompositeMaterialsPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsPermutation }; diff --git a/src/composite_materials/prediction.ts b/src/composite_materials/prediction.ts new file mode 100644 index 000000000..06929a01a --- /dev/null +++ b/src/composite_materials/prediction.ts @@ -0,0 +1,14 @@ +/** composite_materials prediction module — tsb analytics library. */ +export interface CompositeMaterialsPredictionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsPredictionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsPrediction(data: number[], opts: CompositeMaterialsPredictionOptions = {}): CompositeMaterialsPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsPrediction }; diff --git a/src/composite_materials/processing.ts b/src/composite_materials/processing.ts new file mode 100644 index 000000000..695368660 --- /dev/null +++ b/src/composite_materials/processing.ts @@ -0,0 +1,14 @@ +/** composite_materials processing module — tsb analytics library. */ +export interface CompositeMaterialsProcessingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsProcessingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsProcessing(data: number[], opts: CompositeMaterialsProcessingOptions = {}): CompositeMaterialsProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsProcessing }; diff --git a/src/composite_materials/profiling.ts b/src/composite_materials/profiling.ts new file mode 100644 index 000000000..85d6c0bce --- /dev/null +++ b/src/composite_materials/profiling.ts @@ -0,0 +1,14 @@ +/** composite_materials profiling module — tsb analytics library. */ +export interface CompositeMaterialsProfilingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsProfilingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsProfiling(data: number[], opts: CompositeMaterialsProfilingOptions = {}): CompositeMaterialsProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsProfiling }; diff --git a/src/composite_materials/projection.ts b/src/composite_materials/projection.ts new file mode 100644 index 000000000..c2408d829 --- /dev/null +++ b/src/composite_materials/projection.ts @@ -0,0 +1,14 @@ +/** composite_materials projection module — tsb analytics library. */ +export interface CompositeMaterialsProjectionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsProjectionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsProjection(data: number[], opts: CompositeMaterialsProjectionOptions = {}): CompositeMaterialsProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsProjection }; diff --git a/src/composite_materials/ranking.ts b/src/composite_materials/ranking.ts new file mode 100644 index 000000000..f7fd34dde --- /dev/null +++ b/src/composite_materials/ranking.ts @@ -0,0 +1,14 @@ +/** composite_materials ranking module — tsb analytics library. */ +export interface CompositeMaterialsRankingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsRankingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsRanking(data: number[], opts: CompositeMaterialsRankingOptions = {}): CompositeMaterialsRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsRanking }; diff --git a/src/composite_materials/reconstruction.ts b/src/composite_materials/reconstruction.ts new file mode 100644 index 000000000..ee5bd24e9 --- /dev/null +++ b/src/composite_materials/reconstruction.ts @@ -0,0 +1,14 @@ +/** composite_materials reconstruction module — tsb analytics library. */ +export interface CompositeMaterialsReconstructionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsReconstructionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsReconstruction(data: number[], opts: CompositeMaterialsReconstructionOptions = {}): CompositeMaterialsReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsReconstruction }; diff --git a/src/composite_materials/registration.ts b/src/composite_materials/registration.ts new file mode 100644 index 000000000..f34168f0b --- /dev/null +++ b/src/composite_materials/registration.ts @@ -0,0 +1,14 @@ +/** composite_materials registration module — tsb analytics library. */ +export interface CompositeMaterialsRegistrationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsRegistrationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsRegistration(data: number[], opts: CompositeMaterialsRegistrationOptions = {}): CompositeMaterialsRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsRegistration }; diff --git a/src/composite_materials/regression.ts b/src/composite_materials/regression.ts new file mode 100644 index 000000000..571dcfb2f --- /dev/null +++ b/src/composite_materials/regression.ts @@ -0,0 +1,14 @@ +/** composite_materials regression module — tsb analytics library. */ +export interface CompositeMaterialsRegressionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsRegressionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsRegression(data: number[], opts: CompositeMaterialsRegressionOptions = {}): CompositeMaterialsRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsRegression }; diff --git a/src/composite_materials/regularization.ts b/src/composite_materials/regularization.ts new file mode 100644 index 000000000..646ccee08 --- /dev/null +++ b/src/composite_materials/regularization.ts @@ -0,0 +1,14 @@ +/** composite_materials regularization module — tsb analytics library. */ +export interface CompositeMaterialsRegularizationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsRegularizationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsRegularization(data: number[], opts: CompositeMaterialsRegularizationOptions = {}): CompositeMaterialsRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsRegularization }; diff --git a/src/composite_materials/robustness.ts b/src/composite_materials/robustness.ts new file mode 100644 index 000000000..8429bb542 --- /dev/null +++ b/src/composite_materials/robustness.ts @@ -0,0 +1,14 @@ +/** composite_materials robustness module — tsb analytics library. */ +export interface CompositeMaterialsRobustnessOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsRobustnessResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsRobustness(data: number[], opts: CompositeMaterialsRobustnessOptions = {}): CompositeMaterialsRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsRobustness }; diff --git a/src/composite_materials/sampling.ts b/src/composite_materials/sampling.ts new file mode 100644 index 000000000..3dfaf0756 --- /dev/null +++ b/src/composite_materials/sampling.ts @@ -0,0 +1,14 @@ +/** composite_materials sampling module — tsb analytics library. */ +export interface CompositeMaterialsSamplingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSamplingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSampling(data: number[], opts: CompositeMaterialsSamplingOptions = {}): CompositeMaterialsSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSampling }; diff --git a/src/composite_materials/sampling2.ts b/src/composite_materials/sampling2.ts new file mode 100644 index 000000000..ef0b71ca2 --- /dev/null +++ b/src/composite_materials/sampling2.ts @@ -0,0 +1,14 @@ +/** composite_materials sampling2 module — tsb analytics library. */ +export interface CompositeMaterialsSamplingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSamplingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSampling(data: number[], opts: CompositeMaterialsSamplingOptions = {}): CompositeMaterialsSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSampling }; diff --git a/src/composite_materials/scaling.ts b/src/composite_materials/scaling.ts new file mode 100644 index 000000000..686b93a84 --- /dev/null +++ b/src/composite_materials/scaling.ts @@ -0,0 +1,14 @@ +/** composite_materials scaling module — tsb analytics library. */ +export interface CompositeMaterialsScalingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsScalingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsScaling(data: number[], opts: CompositeMaterialsScalingOptions = {}): CompositeMaterialsScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsScaling }; diff --git a/src/composite_materials/scoring.ts b/src/composite_materials/scoring.ts new file mode 100644 index 000000000..90298df69 --- /dev/null +++ b/src/composite_materials/scoring.ts @@ -0,0 +1,14 @@ +/** composite_materials scoring module — tsb analytics library. */ +export interface CompositeMaterialsScoringOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsScoringResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsScoring(data: number[], opts: CompositeMaterialsScoringOptions = {}): CompositeMaterialsScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsScoring }; diff --git a/src/composite_materials/segmentation.ts b/src/composite_materials/segmentation.ts new file mode 100644 index 000000000..c8d9529ad --- /dev/null +++ b/src/composite_materials/segmentation.ts @@ -0,0 +1,14 @@ +/** composite_materials segmentation module — tsb analytics library. */ +export interface CompositeMaterialsSegmentationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSegmentationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSegmentation(data: number[], opts: CompositeMaterialsSegmentationOptions = {}): CompositeMaterialsSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSegmentation }; diff --git a/src/composite_materials/selection.ts b/src/composite_materials/selection.ts new file mode 100644 index 000000000..4232d8504 --- /dev/null +++ b/src/composite_materials/selection.ts @@ -0,0 +1,14 @@ +/** composite_materials selection module — tsb analytics library. */ +export interface CompositeMaterialsSelectionOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSelectionResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSelection(data: number[], opts: CompositeMaterialsSelectionOptions = {}): CompositeMaterialsSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSelection }; diff --git a/src/composite_materials/sensitivity.ts b/src/composite_materials/sensitivity.ts new file mode 100644 index 000000000..4fc255f27 --- /dev/null +++ b/src/composite_materials/sensitivity.ts @@ -0,0 +1,14 @@ +/** composite_materials sensitivity module — tsb analytics library. */ +export interface CompositeMaterialsSensitivityOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSensitivityResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSensitivity(data: number[], opts: CompositeMaterialsSensitivityOptions = {}): CompositeMaterialsSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSensitivity }; diff --git a/src/composite_materials/simulation.ts b/src/composite_materials/simulation.ts new file mode 100644 index 000000000..eb3d70b59 --- /dev/null +++ b/src/composite_materials/simulation.ts @@ -0,0 +1,14 @@ +/** composite_materials simulation module — tsb analytics library. */ +export interface CompositeMaterialsSimulationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSimulationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSimulation(data: number[], opts: CompositeMaterialsSimulationOptions = {}): CompositeMaterialsSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSimulation }; diff --git a/src/composite_materials/smoothing.ts b/src/composite_materials/smoothing.ts new file mode 100644 index 000000000..fe2433823 --- /dev/null +++ b/src/composite_materials/smoothing.ts @@ -0,0 +1,14 @@ +/** composite_materials smoothing module — tsb analytics library. */ +export interface CompositeMaterialsSmoothingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSmoothingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSmoothing(data: number[], opts: CompositeMaterialsSmoothingOptions = {}): CompositeMaterialsSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSmoothing }; diff --git a/src/composite_materials/stability.ts b/src/composite_materials/stability.ts new file mode 100644 index 000000000..5cb6e0b15 --- /dev/null +++ b/src/composite_materials/stability.ts @@ -0,0 +1,14 @@ +/** composite_materials stability module — tsb analytics library. */ +export interface CompositeMaterialsStabilityOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsStabilityResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsStability(data: number[], opts: CompositeMaterialsStabilityOptions = {}): CompositeMaterialsStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsStability }; diff --git a/src/composite_materials/stacking.ts b/src/composite_materials/stacking.ts new file mode 100644 index 000000000..0e27b6fbc --- /dev/null +++ b/src/composite_materials/stacking.ts @@ -0,0 +1,14 @@ +/** composite_materials stacking module — tsb analytics library. */ +export interface CompositeMaterialsStackingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsStackingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsStacking(data: number[], opts: CompositeMaterialsStackingOptions = {}): CompositeMaterialsStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsStacking }; diff --git a/src/composite_materials/standardization.ts b/src/composite_materials/standardization.ts new file mode 100644 index 000000000..fa9820185 --- /dev/null +++ b/src/composite_materials/standardization.ts @@ -0,0 +1,14 @@ +/** composite_materials standardization module — tsb analytics library. */ +export interface CompositeMaterialsStandardizationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsStandardizationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsStandardization(data: number[], opts: CompositeMaterialsStandardizationOptions = {}): CompositeMaterialsStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsStandardization }; diff --git a/src/composite_materials/static.ts b/src/composite_materials/static.ts new file mode 100644 index 000000000..cbfd7c557 --- /dev/null +++ b/src/composite_materials/static.ts @@ -0,0 +1,14 @@ +/** composite_materials static module — tsb analytics library. */ +export interface CompositeMaterialsStaticOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsStaticResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsStatic(data: number[], opts: CompositeMaterialsStaticOptions = {}): CompositeMaterialsStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsStatic }; diff --git a/src/composite_materials/stochastic.ts b/src/composite_materials/stochastic.ts new file mode 100644 index 000000000..8eb44c88a --- /dev/null +++ b/src/composite_materials/stochastic.ts @@ -0,0 +1,14 @@ +/** composite_materials stochastic module — tsb analytics library. */ +export interface CompositeMaterialsStochasticOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsStochasticResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsStochastic(data: number[], opts: CompositeMaterialsStochasticOptions = {}): CompositeMaterialsStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsStochastic }; diff --git a/src/composite_materials/synthesis.ts b/src/composite_materials/synthesis.ts new file mode 100644 index 000000000..2b1506f78 --- /dev/null +++ b/src/composite_materials/synthesis.ts @@ -0,0 +1,14 @@ +/** composite_materials synthesis module — tsb analytics library. */ +export interface CompositeMaterialsSynthesisOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsSynthesisResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsSynthesis(data: number[], opts: CompositeMaterialsSynthesisOptions = {}): CompositeMaterialsSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsSynthesis }; diff --git a/src/composite_materials/topology.ts b/src/composite_materials/topology.ts new file mode 100644 index 000000000..6ae1cae4f --- /dev/null +++ b/src/composite_materials/topology.ts @@ -0,0 +1,14 @@ +/** composite_materials topology module — tsb analytics library. */ +export interface CompositeMaterialsTopologyOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsTopologyResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsTopology(data: number[], opts: CompositeMaterialsTopologyOptions = {}): CompositeMaterialsTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsTopology }; diff --git a/src/composite_materials/tracking.ts b/src/composite_materials/tracking.ts new file mode 100644 index 000000000..5498505f4 --- /dev/null +++ b/src/composite_materials/tracking.ts @@ -0,0 +1,14 @@ +/** composite_materials tracking module — tsb analytics library. */ +export interface CompositeMaterialsTrackingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsTrackingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsTracking(data: number[], opts: CompositeMaterialsTrackingOptions = {}): CompositeMaterialsTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsTracking }; diff --git a/src/composite_materials/transform.ts b/src/composite_materials/transform.ts new file mode 100644 index 000000000..fcc22a264 --- /dev/null +++ b/src/composite_materials/transform.ts @@ -0,0 +1,14 @@ +/** composite_materials transform module — tsb analytics library. */ +export interface CompositeMaterialsTransformOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsTransformResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsTransform(data: number[], opts: CompositeMaterialsTransformOptions = {}): CompositeMaterialsTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsTransform }; diff --git a/src/composite_materials/uncertainty.ts b/src/composite_materials/uncertainty.ts new file mode 100644 index 000000000..d634ae700 --- /dev/null +++ b/src/composite_materials/uncertainty.ts @@ -0,0 +1,14 @@ +/** composite_materials uncertainty module — tsb analytics library. */ +export interface CompositeMaterialsUncertaintyOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsUncertaintyResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsUncertainty(data: number[], opts: CompositeMaterialsUncertaintyOptions = {}): CompositeMaterialsUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsUncertainty }; diff --git a/src/composite_materials/validation.ts b/src/composite_materials/validation.ts new file mode 100644 index 000000000..fc51db9c0 --- /dev/null +++ b/src/composite_materials/validation.ts @@ -0,0 +1,14 @@ +/** composite_materials validation module — tsb analytics library. */ +export interface CompositeMaterialsValidationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsValidationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsValidation(data: number[], opts: CompositeMaterialsValidationOptions = {}): CompositeMaterialsValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsValidation }; diff --git a/src/composite_materials/verification.ts b/src/composite_materials/verification.ts new file mode 100644 index 000000000..ee67e46de --- /dev/null +++ b/src/composite_materials/verification.ts @@ -0,0 +1,14 @@ +/** composite_materials verification module — tsb analytics library. */ +export interface CompositeMaterialsVerificationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsVerificationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsVerification(data: number[], opts: CompositeMaterialsVerificationOptions = {}): CompositeMaterialsVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsVerification }; diff --git a/src/composite_materials/visualization.ts b/src/composite_materials/visualization.ts new file mode 100644 index 000000000..c3839b5f1 --- /dev/null +++ b/src/composite_materials/visualization.ts @@ -0,0 +1,14 @@ +/** composite_materials visualization module — tsb analytics library. */ +export interface CompositeMaterialsVisualizationOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsVisualizationResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsVisualization(data: number[], opts: CompositeMaterialsVisualizationOptions = {}): CompositeMaterialsVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsVisualization }; diff --git a/src/composite_materials/voting.ts b/src/composite_materials/voting.ts new file mode 100644 index 000000000..253b08483 --- /dev/null +++ b/src/composite_materials/voting.ts @@ -0,0 +1,14 @@ +/** composite_materials voting module — tsb analytics library. */ +export interface CompositeMaterialsVotingOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsVotingResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsVoting(data: number[], opts: CompositeMaterialsVotingOptions = {}): CompositeMaterialsVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsVoting }; diff --git a/src/composite_materials/wavelet.ts b/src/composite_materials/wavelet.ts new file mode 100644 index 000000000..01a62085b --- /dev/null +++ b/src/composite_materials/wavelet.ts @@ -0,0 +1,14 @@ +/** composite_materials wavelet module — tsb analytics library. */ +export interface CompositeMaterialsWaveletOptions { tol?: number; maxIter?: number; } +export interface CompositeMaterialsWaveletResult { values: number[]; converged: boolean; } +export function computeCompositeMaterialsWavelet(data: number[], opts: CompositeMaterialsWaveletOptions = {}): CompositeMaterialsWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeCompositeMaterialsWavelet }; diff --git a/src/concrete_sci/adaptation.ts b/src/concrete_sci/adaptation.ts new file mode 100644 index 000000000..8ddd23aba --- /dev/null +++ b/src/concrete_sci/adaptation.ts @@ -0,0 +1,14 @@ +/** concrete_sci adaptation module — tsb analytics library. */ +export interface ConcreteSciAdaptationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciAdaptationResult { values: number[]; converged: boolean; } +export function computeConcreteSciAdaptation(data: number[], opts: ConcreteSciAdaptationOptions = {}): ConcreteSciAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciAdaptation }; diff --git a/src/concrete_sci/aggregation.ts b/src/concrete_sci/aggregation.ts new file mode 100644 index 000000000..58d48799b --- /dev/null +++ b/src/concrete_sci/aggregation.ts @@ -0,0 +1,14 @@ +/** concrete_sci aggregation module — tsb analytics library. */ +export interface ConcreteSciAggregationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciAggregationResult { values: number[]; converged: boolean; } +export function computeConcreteSciAggregation(data: number[], opts: ConcreteSciAggregationOptions = {}): ConcreteSciAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciAggregation }; diff --git a/src/concrete_sci/algebra.ts b/src/concrete_sci/algebra.ts new file mode 100644 index 000000000..8e16bea55 --- /dev/null +++ b/src/concrete_sci/algebra.ts @@ -0,0 +1,14 @@ +/** concrete_sci algebra module — tsb analytics library. */ +export interface ConcreteSciAlgebraOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciAlgebraResult { values: number[]; converged: boolean; } +export function computeConcreteSciAlgebra(data: number[], opts: ConcreteSciAlgebraOptions = {}): ConcreteSciAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciAlgebra }; diff --git a/src/concrete_sci/alignment.ts b/src/concrete_sci/alignment.ts new file mode 100644 index 000000000..0521fced8 --- /dev/null +++ b/src/concrete_sci/alignment.ts @@ -0,0 +1,14 @@ +/** concrete_sci alignment module — tsb analytics library. */ +export interface ConcreteSciAlignmentOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciAlignmentResult { values: number[]; converged: boolean; } +export function computeConcreteSciAlignment(data: number[], opts: ConcreteSciAlignmentOptions = {}): ConcreteSciAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciAlignment }; diff --git a/src/concrete_sci/analysis.ts b/src/concrete_sci/analysis.ts new file mode 100644 index 000000000..17f791c3b --- /dev/null +++ b/src/concrete_sci/analysis.ts @@ -0,0 +1,14 @@ +/** concrete_sci analysis module — tsb analytics library. */ +export interface ConcreteSciAnalysisOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciAnalysisResult { values: number[]; converged: boolean; } +export function computeConcreteSciAnalysis(data: number[], opts: ConcreteSciAnalysisOptions = {}): ConcreteSciAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciAnalysis }; diff --git a/src/concrete_sci/augmentation.ts b/src/concrete_sci/augmentation.ts new file mode 100644 index 000000000..b1f2a21ff --- /dev/null +++ b/src/concrete_sci/augmentation.ts @@ -0,0 +1,14 @@ +/** concrete_sci augmentation module — tsb analytics library. */ +export interface ConcreteSciAugmentationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciAugmentationResult { values: number[]; converged: boolean; } +export function computeConcreteSciAugmentation(data: number[], opts: ConcreteSciAugmentationOptions = {}): ConcreteSciAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciAugmentation }; diff --git a/src/concrete_sci/bagging.ts b/src/concrete_sci/bagging.ts new file mode 100644 index 000000000..34432d953 --- /dev/null +++ b/src/concrete_sci/bagging.ts @@ -0,0 +1,14 @@ +/** concrete_sci bagging module — tsb analytics library. */ +export interface ConcreteSciBaggingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciBaggingResult { values: number[]; converged: boolean; } +export function computeConcreteSciBagging(data: number[], opts: ConcreteSciBaggingOptions = {}): ConcreteSciBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciBagging }; diff --git a/src/concrete_sci/basis.ts b/src/concrete_sci/basis.ts new file mode 100644 index 000000000..92700fd2e --- /dev/null +++ b/src/concrete_sci/basis.ts @@ -0,0 +1,14 @@ +/** concrete_sci basis module — tsb analytics library. */ +export interface ConcreteSciBasisOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciBasisResult { values: number[]; converged: boolean; } +export function computeConcreteSciBasis(data: number[], opts: ConcreteSciBasisOptions = {}): ConcreteSciBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciBasis }; diff --git a/src/concrete_sci/benchmarking.ts b/src/concrete_sci/benchmarking.ts new file mode 100644 index 000000000..df012d731 --- /dev/null +++ b/src/concrete_sci/benchmarking.ts @@ -0,0 +1,14 @@ +/** concrete_sci benchmarking module — tsb analytics library. */ +export interface ConcreteSciBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciBenchmarkingResult { values: number[]; converged: boolean; } +export function computeConcreteSciBenchmarking(data: number[], opts: ConcreteSciBenchmarkingOptions = {}): ConcreteSciBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciBenchmarking }; diff --git a/src/concrete_sci/blending.ts b/src/concrete_sci/blending.ts new file mode 100644 index 000000000..f406df0e2 --- /dev/null +++ b/src/concrete_sci/blending.ts @@ -0,0 +1,14 @@ +/** concrete_sci blending module — tsb analytics library. */ +export interface ConcreteSciBlendingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciBlendingResult { values: number[]; converged: boolean; } +export function computeConcreteSciBlending(data: number[], opts: ConcreteSciBlendingOptions = {}): ConcreteSciBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciBlending }; diff --git a/src/concrete_sci/boosting.ts b/src/concrete_sci/boosting.ts new file mode 100644 index 000000000..4ab41e0ef --- /dev/null +++ b/src/concrete_sci/boosting.ts @@ -0,0 +1,14 @@ +/** concrete_sci boosting module — tsb analytics library. */ +export interface ConcreteSciBoostingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciBoostingResult { values: number[]; converged: boolean; } +export function computeConcreteSciBoosting(data: number[], opts: ConcreteSciBoostingOptions = {}): ConcreteSciBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciBoosting }; diff --git a/src/concrete_sci/bootstrap.ts b/src/concrete_sci/bootstrap.ts new file mode 100644 index 000000000..16bbb9b06 --- /dev/null +++ b/src/concrete_sci/bootstrap.ts @@ -0,0 +1,14 @@ +/** concrete_sci bootstrap module — tsb analytics library. */ +export interface ConcreteSciBootstrapOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciBootstrapResult { values: number[]; converged: boolean; } +export function computeConcreteSciBootstrap(data: number[], opts: ConcreteSciBootstrapOptions = {}): ConcreteSciBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciBootstrap }; diff --git a/src/concrete_sci/calculus.ts b/src/concrete_sci/calculus.ts new file mode 100644 index 000000000..b10430a04 --- /dev/null +++ b/src/concrete_sci/calculus.ts @@ -0,0 +1,14 @@ +/** concrete_sci calculus module — tsb analytics library. */ +export interface ConcreteSciCalculusOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCalculusResult { values: number[]; converged: boolean; } +export function computeConcreteSciCalculus(data: number[], opts: ConcreteSciCalculusOptions = {}): ConcreteSciCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCalculus }; diff --git a/src/concrete_sci/calibration.ts b/src/concrete_sci/calibration.ts new file mode 100644 index 000000000..0faa55050 --- /dev/null +++ b/src/concrete_sci/calibration.ts @@ -0,0 +1,14 @@ +/** concrete_sci calibration module — tsb analytics library. */ +export interface ConcreteSciCalibrationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCalibrationResult { values: number[]; converged: boolean; } +export function computeConcreteSciCalibration(data: number[], opts: ConcreteSciCalibrationOptions = {}): ConcreteSciCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCalibration }; diff --git a/src/concrete_sci/characterization.ts b/src/concrete_sci/characterization.ts new file mode 100644 index 000000000..cdac8d76c --- /dev/null +++ b/src/concrete_sci/characterization.ts @@ -0,0 +1,14 @@ +/** concrete_sci characterization module — tsb analytics library. */ +export interface ConcreteSciCharacterizationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCharacterizationResult { values: number[]; converged: boolean; } +export function computeConcreteSciCharacterization(data: number[], opts: ConcreteSciCharacterizationOptions = {}): ConcreteSciCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCharacterization }; diff --git a/src/concrete_sci/classification.ts b/src/concrete_sci/classification.ts new file mode 100644 index 000000000..087b6bf92 --- /dev/null +++ b/src/concrete_sci/classification.ts @@ -0,0 +1,14 @@ +/** concrete_sci classification module — tsb analytics library. */ +export interface ConcreteSciClassificationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciClassificationResult { values: number[]; converged: boolean; } +export function computeConcreteSciClassification(data: number[], opts: ConcreteSciClassificationOptions = {}): ConcreteSciClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciClassification }; diff --git a/src/concrete_sci/clustering.ts b/src/concrete_sci/clustering.ts new file mode 100644 index 000000000..c8d87b231 --- /dev/null +++ b/src/concrete_sci/clustering.ts @@ -0,0 +1,14 @@ +/** concrete_sci clustering module — tsb analytics library. */ +export interface ConcreteSciClusteringOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciClusteringResult { values: number[]; converged: boolean; } +export function computeConcreteSciClustering(data: number[], opts: ConcreteSciClusteringOptions = {}): ConcreteSciClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciClustering }; diff --git a/src/concrete_sci/compression.ts b/src/concrete_sci/compression.ts new file mode 100644 index 000000000..04ab16a35 --- /dev/null +++ b/src/concrete_sci/compression.ts @@ -0,0 +1,14 @@ +/** concrete_sci compression module — tsb analytics library. */ +export interface ConcreteSciCompressionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCompressionResult { values: number[]; converged: boolean; } +export function computeConcreteSciCompression(data: number[], opts: ConcreteSciCompressionOptions = {}): ConcreteSciCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCompression }; diff --git a/src/concrete_sci/continuous.ts b/src/concrete_sci/continuous.ts new file mode 100644 index 000000000..13a7b7f10 --- /dev/null +++ b/src/concrete_sci/continuous.ts @@ -0,0 +1,14 @@ +/** concrete_sci continuous module — tsb analytics library. */ +export interface ConcreteSciContinuousOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciContinuousResult { values: number[]; converged: boolean; } +export function computeConcreteSciContinuous(data: number[], opts: ConcreteSciContinuousOptions = {}): ConcreteSciContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciContinuous }; diff --git a/src/concrete_sci/control.ts b/src/concrete_sci/control.ts new file mode 100644 index 000000000..d98cfd935 --- /dev/null +++ b/src/concrete_sci/control.ts @@ -0,0 +1,14 @@ +/** concrete_sci control module — tsb analytics library. */ +export interface ConcreteSciControlOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciControlResult { values: number[]; converged: boolean; } +export function computeConcreteSciControl(data: number[], opts: ConcreteSciControlOptions = {}): ConcreteSciControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciControl }; diff --git a/src/concrete_sci/convergence.ts b/src/concrete_sci/convergence.ts new file mode 100644 index 000000000..9e6abad5a --- /dev/null +++ b/src/concrete_sci/convergence.ts @@ -0,0 +1,14 @@ +/** concrete_sci convergence module — tsb analytics library. */ +export interface ConcreteSciConvergenceOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciConvergenceResult { values: number[]; converged: boolean; } +export function computeConcreteSciConvergence(data: number[], opts: ConcreteSciConvergenceOptions = {}): ConcreteSciConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciConvergence }; diff --git a/src/concrete_sci/convex.ts b/src/concrete_sci/convex.ts new file mode 100644 index 000000000..4073753b9 --- /dev/null +++ b/src/concrete_sci/convex.ts @@ -0,0 +1,14 @@ +/** concrete_sci convex module — tsb analytics library. */ +export interface ConcreteSciConvexOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciConvexResult { values: number[]; converged: boolean; } +export function computeConcreteSciConvex(data: number[], opts: ConcreteSciConvexOptions = {}): ConcreteSciConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciConvex }; diff --git a/src/concrete_sci/correlation.ts b/src/concrete_sci/correlation.ts new file mode 100644 index 000000000..f1c5fa99e --- /dev/null +++ b/src/concrete_sci/correlation.ts @@ -0,0 +1,14 @@ +/** concrete_sci correlation module — tsb analytics library. */ +export interface ConcreteSciCorrelationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCorrelationResult { values: number[]; converged: boolean; } +export function computeConcreteSciCorrelation(data: number[], opts: ConcreteSciCorrelationOptions = {}): ConcreteSciCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCorrelation }; diff --git a/src/concrete_sci/covariance.ts b/src/concrete_sci/covariance.ts new file mode 100644 index 000000000..f5f10c6f2 --- /dev/null +++ b/src/concrete_sci/covariance.ts @@ -0,0 +1,14 @@ +/** concrete_sci covariance module — tsb analytics library. */ +export interface ConcreteSciCovarianceOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCovarianceResult { values: number[]; converged: boolean; } +export function computeConcreteSciCovariance(data: number[], opts: ConcreteSciCovarianceOptions = {}): ConcreteSciCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCovariance }; diff --git a/src/concrete_sci/cross_validation.ts b/src/concrete_sci/cross_validation.ts new file mode 100644 index 000000000..b79ab2a89 --- /dev/null +++ b/src/concrete_sci/cross_validation.ts @@ -0,0 +1,14 @@ +/** concrete_sci cross_validation module — tsb analytics library. */ +export interface ConcreteSciCrossValidationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciCrossValidationResult { values: number[]; converged: boolean; } +export function computeConcreteSciCrossValidation(data: number[], opts: ConcreteSciCrossValidationOptions = {}): ConcreteSciCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciCrossValidation }; diff --git a/src/concrete_sci/decoding.ts b/src/concrete_sci/decoding.ts new file mode 100644 index 000000000..2848af0bc --- /dev/null +++ b/src/concrete_sci/decoding.ts @@ -0,0 +1,14 @@ +/** concrete_sci decoding module — tsb analytics library. */ +export interface ConcreteSciDecodingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDecodingResult { values: number[]; converged: boolean; } +export function computeConcreteSciDecoding(data: number[], opts: ConcreteSciDecodingOptions = {}): ConcreteSciDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDecoding }; diff --git a/src/concrete_sci/decomposition.ts b/src/concrete_sci/decomposition.ts new file mode 100644 index 000000000..6a83ad182 --- /dev/null +++ b/src/concrete_sci/decomposition.ts @@ -0,0 +1,14 @@ +/** concrete_sci decomposition module — tsb analytics library. */ +export interface ConcreteSciDecompositionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDecompositionResult { values: number[]; converged: boolean; } +export function computeConcreteSciDecomposition(data: number[], opts: ConcreteSciDecompositionOptions = {}): ConcreteSciDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDecomposition }; diff --git a/src/concrete_sci/detection.ts b/src/concrete_sci/detection.ts new file mode 100644 index 000000000..80ac4dc1e --- /dev/null +++ b/src/concrete_sci/detection.ts @@ -0,0 +1,14 @@ +/** concrete_sci detection module — tsb analytics library. */ +export interface ConcreteSciDetectionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDetectionResult { values: number[]; converged: boolean; } +export function computeConcreteSciDetection(data: number[], opts: ConcreteSciDetectionOptions = {}): ConcreteSciDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDetection }; diff --git a/src/concrete_sci/deterministic.ts b/src/concrete_sci/deterministic.ts new file mode 100644 index 000000000..4bea48456 --- /dev/null +++ b/src/concrete_sci/deterministic.ts @@ -0,0 +1,14 @@ +/** concrete_sci deterministic module — tsb analytics library. */ +export interface ConcreteSciDeterministicOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDeterministicResult { values: number[]; converged: boolean; } +export function computeConcreteSciDeterministic(data: number[], opts: ConcreteSciDeterministicOptions = {}): ConcreteSciDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDeterministic }; diff --git a/src/concrete_sci/diagnostics.ts b/src/concrete_sci/diagnostics.ts new file mode 100644 index 000000000..ef18901d4 --- /dev/null +++ b/src/concrete_sci/diagnostics.ts @@ -0,0 +1,14 @@ +/** concrete_sci diagnostics module — tsb analytics library. */ +export interface ConcreteSciDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDiagnosticsResult { values: number[]; converged: boolean; } +export function computeConcreteSciDiagnostics(data: number[], opts: ConcreteSciDiagnosticsOptions = {}): ConcreteSciDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDiagnostics }; diff --git a/src/concrete_sci/differential.ts b/src/concrete_sci/differential.ts new file mode 100644 index 000000000..270ff5ade --- /dev/null +++ b/src/concrete_sci/differential.ts @@ -0,0 +1,14 @@ +/** concrete_sci differential module — tsb analytics library. */ +export interface ConcreteSciDifferentialOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDifferentialResult { values: number[]; converged: boolean; } +export function computeConcreteSciDifferential(data: number[], opts: ConcreteSciDifferentialOptions = {}): ConcreteSciDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDifferential }; diff --git a/src/concrete_sci/discrete.ts b/src/concrete_sci/discrete.ts new file mode 100644 index 000000000..65e10ab26 --- /dev/null +++ b/src/concrete_sci/discrete.ts @@ -0,0 +1,14 @@ +/** concrete_sci discrete module — tsb analytics library. */ +export interface ConcreteSciDiscreteOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDiscreteResult { values: number[]; converged: boolean; } +export function computeConcreteSciDiscrete(data: number[], opts: ConcreteSciDiscreteOptions = {}): ConcreteSciDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDiscrete }; diff --git a/src/concrete_sci/distribution.ts b/src/concrete_sci/distribution.ts new file mode 100644 index 000000000..c7f1847a7 --- /dev/null +++ b/src/concrete_sci/distribution.ts @@ -0,0 +1,14 @@ +/** concrete_sci distribution module — tsb analytics library. */ +export interface ConcreteSciDistributionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDistributionResult { values: number[]; converged: boolean; } +export function computeConcreteSciDistribution(data: number[], opts: ConcreteSciDistributionOptions = {}): ConcreteSciDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDistribution }; diff --git a/src/concrete_sci/dynamic.ts b/src/concrete_sci/dynamic.ts new file mode 100644 index 000000000..a0046863e --- /dev/null +++ b/src/concrete_sci/dynamic.ts @@ -0,0 +1,14 @@ +/** concrete_sci dynamic module — tsb analytics library. */ +export interface ConcreteSciDynamicOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciDynamicResult { values: number[]; converged: boolean; } +export function computeConcreteSciDynamic(data: number[], opts: ConcreteSciDynamicOptions = {}): ConcreteSciDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciDynamic }; diff --git a/src/concrete_sci/embedding.ts b/src/concrete_sci/embedding.ts new file mode 100644 index 000000000..0f5e4db99 --- /dev/null +++ b/src/concrete_sci/embedding.ts @@ -0,0 +1,14 @@ +/** concrete_sci embedding module — tsb analytics library. */ +export interface ConcreteSciEmbeddingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciEmbeddingResult { values: number[]; converged: boolean; } +export function computeConcreteSciEmbedding(data: number[], opts: ConcreteSciEmbeddingOptions = {}): ConcreteSciEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciEmbedding }; diff --git a/src/concrete_sci/encoding.ts b/src/concrete_sci/encoding.ts new file mode 100644 index 000000000..abe4565bc --- /dev/null +++ b/src/concrete_sci/encoding.ts @@ -0,0 +1,14 @@ +/** concrete_sci encoding module — tsb analytics library. */ +export interface ConcreteSciEncodingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciEncodingResult { values: number[]; converged: boolean; } +export function computeConcreteSciEncoding(data: number[], opts: ConcreteSciEncodingOptions = {}): ConcreteSciEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciEncoding }; diff --git a/src/concrete_sci/ensemble.ts b/src/concrete_sci/ensemble.ts new file mode 100644 index 000000000..d6eaf7fdc --- /dev/null +++ b/src/concrete_sci/ensemble.ts @@ -0,0 +1,14 @@ +/** concrete_sci ensemble module — tsb analytics library. */ +export interface ConcreteSciEnsembleOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciEnsembleResult { values: number[]; converged: boolean; } +export function computeConcreteSciEnsemble(data: number[], opts: ConcreteSciEnsembleOptions = {}): ConcreteSciEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciEnsemble }; diff --git a/src/concrete_sci/estimation.ts b/src/concrete_sci/estimation.ts new file mode 100644 index 000000000..5a275cbe0 --- /dev/null +++ b/src/concrete_sci/estimation.ts @@ -0,0 +1,14 @@ +/** concrete_sci estimation module — tsb analytics library. */ +export interface ConcreteSciEstimationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciEstimationResult { values: number[]; converged: boolean; } +export function computeConcreteSciEstimation(data: number[], opts: ConcreteSciEstimationOptions = {}): ConcreteSciEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciEstimation }; diff --git a/src/concrete_sci/evaluation.ts b/src/concrete_sci/evaluation.ts new file mode 100644 index 000000000..429f100a1 --- /dev/null +++ b/src/concrete_sci/evaluation.ts @@ -0,0 +1,14 @@ +/** concrete_sci evaluation module — tsb analytics library. */ +export interface ConcreteSciEvaluationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciEvaluationResult { values: number[]; converged: boolean; } +export function computeConcreteSciEvaluation(data: number[], opts: ConcreteSciEvaluationOptions = {}): ConcreteSciEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciEvaluation }; diff --git a/src/concrete_sci/extrapolation.ts b/src/concrete_sci/extrapolation.ts new file mode 100644 index 000000000..7b3a4d162 --- /dev/null +++ b/src/concrete_sci/extrapolation.ts @@ -0,0 +1,14 @@ +/** concrete_sci extrapolation module — tsb analytics library. */ +export interface ConcreteSciExtrapolationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciExtrapolationResult { values: number[]; converged: boolean; } +export function computeConcreteSciExtrapolation(data: number[], opts: ConcreteSciExtrapolationOptions = {}): ConcreteSciExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciExtrapolation }; diff --git a/src/concrete_sci/features.ts b/src/concrete_sci/features.ts new file mode 100644 index 000000000..8a52eb0a8 --- /dev/null +++ b/src/concrete_sci/features.ts @@ -0,0 +1,14 @@ +/** concrete_sci features module — tsb analytics library. */ +export interface ConcreteSciFeaturesOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciFeaturesResult { values: number[]; converged: boolean; } +export function computeConcreteSciFeatures(data: number[], opts: ConcreteSciFeaturesOptions = {}): ConcreteSciFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciFeatures }; diff --git a/src/concrete_sci/feedback.ts b/src/concrete_sci/feedback.ts new file mode 100644 index 000000000..fba0467ca --- /dev/null +++ b/src/concrete_sci/feedback.ts @@ -0,0 +1,14 @@ +/** concrete_sci feedback module — tsb analytics library. */ +export interface ConcreteSciFeedbackOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciFeedbackResult { values: number[]; converged: boolean; } +export function computeConcreteSciFeedback(data: number[], opts: ConcreteSciFeedbackOptions = {}): ConcreteSciFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciFeedback }; diff --git a/src/concrete_sci/filtering.ts b/src/concrete_sci/filtering.ts new file mode 100644 index 000000000..39de0457a --- /dev/null +++ b/src/concrete_sci/filtering.ts @@ -0,0 +1,14 @@ +/** concrete_sci filtering module — tsb analytics library. */ +export interface ConcreteSciFilteringOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciFilteringResult { values: number[]; converged: boolean; } +export function computeConcreteSciFiltering(data: number[], opts: ConcreteSciFilteringOptions = {}): ConcreteSciFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciFiltering }; diff --git a/src/concrete_sci/fourier.ts b/src/concrete_sci/fourier.ts new file mode 100644 index 000000000..279216a13 --- /dev/null +++ b/src/concrete_sci/fourier.ts @@ -0,0 +1,14 @@ +/** concrete_sci fourier module — tsb analytics library. */ +export interface ConcreteSciFourierOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciFourierResult { values: number[]; converged: boolean; } +export function computeConcreteSciFourier(data: number[], opts: ConcreteSciFourierOptions = {}): ConcreteSciFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciFourier }; diff --git a/src/concrete_sci/fusion.ts b/src/concrete_sci/fusion.ts new file mode 100644 index 000000000..f88a59de0 --- /dev/null +++ b/src/concrete_sci/fusion.ts @@ -0,0 +1,14 @@ +/** concrete_sci fusion module — tsb analytics library. */ +export interface ConcreteSciFusionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciFusionResult { values: number[]; converged: boolean; } +export function computeConcreteSciFusion(data: number[], opts: ConcreteSciFusionOptions = {}): ConcreteSciFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciFusion }; diff --git a/src/concrete_sci/generation.ts b/src/concrete_sci/generation.ts new file mode 100644 index 000000000..d7dd5ebd6 --- /dev/null +++ b/src/concrete_sci/generation.ts @@ -0,0 +1,14 @@ +/** concrete_sci generation module — tsb analytics library. */ +export interface ConcreteSciGenerationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciGenerationResult { values: number[]; converged: boolean; } +export function computeConcreteSciGeneration(data: number[], opts: ConcreteSciGenerationOptions = {}): ConcreteSciGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciGeneration }; diff --git a/src/concrete_sci/geometry.ts b/src/concrete_sci/geometry.ts new file mode 100644 index 000000000..406999ead --- /dev/null +++ b/src/concrete_sci/geometry.ts @@ -0,0 +1,14 @@ +/** concrete_sci geometry module — tsb analytics library. */ +export interface ConcreteSciGeometryOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciGeometryResult { values: number[]; converged: boolean; } +export function computeConcreteSciGeometry(data: number[], opts: ConcreteSciGeometryOptions = {}): ConcreteSciGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciGeometry }; diff --git a/src/concrete_sci/gradient.ts b/src/concrete_sci/gradient.ts new file mode 100644 index 000000000..9ffe94de8 --- /dev/null +++ b/src/concrete_sci/gradient.ts @@ -0,0 +1,14 @@ +/** concrete_sci gradient module — tsb analytics library. */ +export interface ConcreteSciGradientOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciGradientResult { values: number[]; converged: boolean; } +export function computeConcreteSciGradient(data: number[], opts: ConcreteSciGradientOptions = {}): ConcreteSciGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciGradient }; diff --git a/src/concrete_sci/hessian.ts b/src/concrete_sci/hessian.ts new file mode 100644 index 000000000..1d6042552 --- /dev/null +++ b/src/concrete_sci/hessian.ts @@ -0,0 +1,14 @@ +/** concrete_sci hessian module — tsb analytics library. */ +export interface ConcreteSciHessianOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciHessianResult { values: number[]; converged: boolean; } +export function computeConcreteSciHessian(data: number[], opts: ConcreteSciHessianOptions = {}): ConcreteSciHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciHessian }; diff --git a/src/concrete_sci/hypothesis.ts b/src/concrete_sci/hypothesis.ts new file mode 100644 index 000000000..c2c91ed01 --- /dev/null +++ b/src/concrete_sci/hypothesis.ts @@ -0,0 +1,14 @@ +/** concrete_sci hypothesis module — tsb analytics library. */ +export interface ConcreteSciHypothesisOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciHypothesisResult { values: number[]; converged: boolean; } +export function computeConcreteSciHypothesis(data: number[], opts: ConcreteSciHypothesisOptions = {}): ConcreteSciHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciHypothesis }; diff --git a/src/concrete_sci/inference.ts b/src/concrete_sci/inference.ts new file mode 100644 index 000000000..6780d1fe1 --- /dev/null +++ b/src/concrete_sci/inference.ts @@ -0,0 +1,14 @@ +/** concrete_sci inference module — tsb analytics library. */ +export interface ConcreteSciInferenceOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciInferenceResult { values: number[]; converged: boolean; } +export function computeConcreteSciInference(data: number[], opts: ConcreteSciInferenceOptions = {}): ConcreteSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciInference }; diff --git a/src/concrete_sci/inference2.ts b/src/concrete_sci/inference2.ts new file mode 100644 index 000000000..b33328316 --- /dev/null +++ b/src/concrete_sci/inference2.ts @@ -0,0 +1,14 @@ +/** concrete_sci inference2 module — tsb analytics library. */ +export interface ConcreteSciInferenceOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciInferenceResult { values: number[]; converged: boolean; } +export function computeConcreteSciInference(data: number[], opts: ConcreteSciInferenceOptions = {}): ConcreteSciInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciInference }; diff --git a/src/concrete_sci/integral.ts b/src/concrete_sci/integral.ts new file mode 100644 index 000000000..75430b70e --- /dev/null +++ b/src/concrete_sci/integral.ts @@ -0,0 +1,14 @@ +/** concrete_sci integral module — tsb analytics library. */ +export interface ConcreteSciIntegralOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciIntegralResult { values: number[]; converged: boolean; } +export function computeConcreteSciIntegral(data: number[], opts: ConcreteSciIntegralOptions = {}): ConcreteSciIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciIntegral }; diff --git a/src/concrete_sci/integration.ts b/src/concrete_sci/integration.ts new file mode 100644 index 000000000..40df632cc --- /dev/null +++ b/src/concrete_sci/integration.ts @@ -0,0 +1,14 @@ +/** concrete_sci integration module — tsb analytics library. */ +export interface ConcreteSciIntegrationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciIntegrationResult { values: number[]; converged: boolean; } +export function computeConcreteSciIntegration(data: number[], opts: ConcreteSciIntegrationOptions = {}): ConcreteSciIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciIntegration }; diff --git a/src/concrete_sci/interpolation.ts b/src/concrete_sci/interpolation.ts new file mode 100644 index 000000000..8e46a49df --- /dev/null +++ b/src/concrete_sci/interpolation.ts @@ -0,0 +1,14 @@ +/** concrete_sci interpolation module — tsb analytics library. */ +export interface ConcreteSciInterpolationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciInterpolationResult { values: number[]; converged: boolean; } +export function computeConcreteSciInterpolation(data: number[], opts: ConcreteSciInterpolationOptions = {}): ConcreteSciInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciInterpolation }; diff --git a/src/concrete_sci/jacobian.ts b/src/concrete_sci/jacobian.ts new file mode 100644 index 000000000..e5d69ec3c --- /dev/null +++ b/src/concrete_sci/jacobian.ts @@ -0,0 +1,14 @@ +/** concrete_sci jacobian module — tsb analytics library. */ +export interface ConcreteSciJacobianOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciJacobianResult { values: number[]; converged: boolean; } +export function computeConcreteSciJacobian(data: number[], opts: ConcreteSciJacobianOptions = {}): ConcreteSciJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciJacobian }; diff --git a/src/concrete_sci/kernel.ts b/src/concrete_sci/kernel.ts new file mode 100644 index 000000000..9247242c5 --- /dev/null +++ b/src/concrete_sci/kernel.ts @@ -0,0 +1,14 @@ +/** concrete_sci kernel module — tsb analytics library. */ +export interface ConcreteSciKernelOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciKernelResult { values: number[]; converged: boolean; } +export function computeConcreteSciKernel(data: number[], opts: ConcreteSciKernelOptions = {}): ConcreteSciKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciKernel }; diff --git a/src/concrete_sci/laplacian.ts b/src/concrete_sci/laplacian.ts new file mode 100644 index 000000000..fe1c29b9c --- /dev/null +++ b/src/concrete_sci/laplacian.ts @@ -0,0 +1,14 @@ +/** concrete_sci laplacian module — tsb analytics library. */ +export interface ConcreteSciLaplacianOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciLaplacianResult { values: number[]; converged: boolean; } +export function computeConcreteSciLaplacian(data: number[], opts: ConcreteSciLaplacianOptions = {}): ConcreteSciLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciLaplacian }; diff --git a/src/concrete_sci/learning.ts b/src/concrete_sci/learning.ts new file mode 100644 index 000000000..8a0ddbf53 --- /dev/null +++ b/src/concrete_sci/learning.ts @@ -0,0 +1,14 @@ +/** concrete_sci learning module — tsb analytics library. */ +export interface ConcreteSciLearningOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciLearningResult { values: number[]; converged: boolean; } +export function computeConcreteSciLearning(data: number[], opts: ConcreteSciLearningOptions = {}): ConcreteSciLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciLearning }; diff --git a/src/concrete_sci/linear.ts b/src/concrete_sci/linear.ts new file mode 100644 index 000000000..e57511a62 --- /dev/null +++ b/src/concrete_sci/linear.ts @@ -0,0 +1,14 @@ +/** concrete_sci linear module — tsb analytics library. */ +export interface ConcreteSciLinearOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciLinearResult { values: number[]; converged: boolean; } +export function computeConcreteSciLinear(data: number[], opts: ConcreteSciLinearOptions = {}): ConcreteSciLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciLinear }; diff --git a/src/concrete_sci/manifold.ts b/src/concrete_sci/manifold.ts new file mode 100644 index 000000000..a1e439254 --- /dev/null +++ b/src/concrete_sci/manifold.ts @@ -0,0 +1,14 @@ +/** concrete_sci manifold module — tsb analytics library. */ +export interface ConcreteSciManifoldOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciManifoldResult { values: number[]; converged: boolean; } +export function computeConcreteSciManifold(data: number[], opts: ConcreteSciManifoldOptions = {}): ConcreteSciManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciManifold }; diff --git a/src/concrete_sci/matching.ts b/src/concrete_sci/matching.ts new file mode 100644 index 000000000..aa9476984 --- /dev/null +++ b/src/concrete_sci/matching.ts @@ -0,0 +1,14 @@ +/** concrete_sci matching module — tsb analytics library. */ +export interface ConcreteSciMatchingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciMatchingResult { values: number[]; converged: boolean; } +export function computeConcreteSciMatching(data: number[], opts: ConcreteSciMatchingOptions = {}): ConcreteSciMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciMatching }; diff --git a/src/concrete_sci/measurement.ts b/src/concrete_sci/measurement.ts new file mode 100644 index 000000000..5b208026a --- /dev/null +++ b/src/concrete_sci/measurement.ts @@ -0,0 +1,14 @@ +/** concrete_sci measurement module — tsb analytics library. */ +export interface ConcreteSciMeasurementOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciMeasurementResult { values: number[]; converged: boolean; } +export function computeConcreteSciMeasurement(data: number[], opts: ConcreteSciMeasurementOptions = {}): ConcreteSciMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciMeasurement }; diff --git a/src/concrete_sci/metrics.ts b/src/concrete_sci/metrics.ts new file mode 100644 index 000000000..e4a386a2e --- /dev/null +++ b/src/concrete_sci/metrics.ts @@ -0,0 +1,14 @@ +/** concrete_sci metrics module — tsb analytics library. */ +export interface ConcreteSciMetricsOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciMetricsResult { values: number[]; converged: boolean; } +export function computeConcreteSciMetrics(data: number[], opts: ConcreteSciMetricsOptions = {}): ConcreteSciMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciMetrics }; diff --git a/src/concrete_sci/modeling.ts b/src/concrete_sci/modeling.ts new file mode 100644 index 000000000..c86ef45ce --- /dev/null +++ b/src/concrete_sci/modeling.ts @@ -0,0 +1,14 @@ +/** concrete_sci modeling module — tsb analytics library. */ +export interface ConcreteSciModelingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciModelingResult { values: number[]; converged: boolean; } +export function computeConcreteSciModeling(data: number[], opts: ConcreteSciModelingOptions = {}): ConcreteSciModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciModeling }; diff --git a/src/concrete_sci/monitoring.ts b/src/concrete_sci/monitoring.ts new file mode 100644 index 000000000..c151ad79d --- /dev/null +++ b/src/concrete_sci/monitoring.ts @@ -0,0 +1,14 @@ +/** concrete_sci monitoring module — tsb analytics library. */ +export interface ConcreteSciMonitoringOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciMonitoringResult { values: number[]; converged: boolean; } +export function computeConcreteSciMonitoring(data: number[], opts: ConcreteSciMonitoringOptions = {}): ConcreteSciMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciMonitoring }; diff --git a/src/concrete_sci/nonlinear.ts b/src/concrete_sci/nonlinear.ts new file mode 100644 index 000000000..76888fc51 --- /dev/null +++ b/src/concrete_sci/nonlinear.ts @@ -0,0 +1,14 @@ +/** concrete_sci nonlinear module — tsb analytics library. */ +export interface ConcreteSciNonlinearOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciNonlinearResult { values: number[]; converged: boolean; } +export function computeConcreteSciNonlinear(data: number[], opts: ConcreteSciNonlinearOptions = {}): ConcreteSciNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciNonlinear }; diff --git a/src/concrete_sci/normalization.ts b/src/concrete_sci/normalization.ts new file mode 100644 index 000000000..2a2ee6f27 --- /dev/null +++ b/src/concrete_sci/normalization.ts @@ -0,0 +1,14 @@ +/** concrete_sci normalization module — tsb analytics library. */ +export interface ConcreteSciNormalizationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciNormalizationResult { values: number[]; converged: boolean; } +export function computeConcreteSciNormalization(data: number[], opts: ConcreteSciNormalizationOptions = {}): ConcreteSciNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciNormalization }; diff --git a/src/concrete_sci/optimization.ts b/src/concrete_sci/optimization.ts new file mode 100644 index 000000000..3994ebefd --- /dev/null +++ b/src/concrete_sci/optimization.ts @@ -0,0 +1,14 @@ +/** concrete_sci optimization module — tsb analytics library. */ +export interface ConcreteSciOptimizationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciOptimizationResult { values: number[]; converged: boolean; } +export function computeConcreteSciOptimization(data: number[], opts: ConcreteSciOptimizationOptions = {}): ConcreteSciOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciOptimization }; diff --git a/src/concrete_sci/patterns.ts b/src/concrete_sci/patterns.ts new file mode 100644 index 000000000..9c0b87343 --- /dev/null +++ b/src/concrete_sci/patterns.ts @@ -0,0 +1,14 @@ +/** concrete_sci patterns module — tsb analytics library. */ +export interface ConcreteSciPatternsOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciPatternsResult { values: number[]; converged: boolean; } +export function computeConcreteSciPatterns(data: number[], opts: ConcreteSciPatternsOptions = {}): ConcreteSciPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciPatterns }; diff --git a/src/concrete_sci/permutation.ts b/src/concrete_sci/permutation.ts new file mode 100644 index 000000000..0e2a8de51 --- /dev/null +++ b/src/concrete_sci/permutation.ts @@ -0,0 +1,14 @@ +/** concrete_sci permutation module — tsb analytics library. */ +export interface ConcreteSciPermutationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciPermutationResult { values: number[]; converged: boolean; } +export function computeConcreteSciPermutation(data: number[], opts: ConcreteSciPermutationOptions = {}): ConcreteSciPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciPermutation }; diff --git a/src/concrete_sci/prediction.ts b/src/concrete_sci/prediction.ts new file mode 100644 index 000000000..8e315deff --- /dev/null +++ b/src/concrete_sci/prediction.ts @@ -0,0 +1,14 @@ +/** concrete_sci prediction module — tsb analytics library. */ +export interface ConcreteSciPredictionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciPredictionResult { values: number[]; converged: boolean; } +export function computeConcreteSciPrediction(data: number[], opts: ConcreteSciPredictionOptions = {}): ConcreteSciPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciPrediction }; diff --git a/src/concrete_sci/processing.ts b/src/concrete_sci/processing.ts new file mode 100644 index 000000000..387bf8af3 --- /dev/null +++ b/src/concrete_sci/processing.ts @@ -0,0 +1,14 @@ +/** concrete_sci processing module — tsb analytics library. */ +export interface ConcreteSciProcessingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciProcessingResult { values: number[]; converged: boolean; } +export function computeConcreteSciProcessing(data: number[], opts: ConcreteSciProcessingOptions = {}): ConcreteSciProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciProcessing }; diff --git a/src/concrete_sci/profiling.ts b/src/concrete_sci/profiling.ts new file mode 100644 index 000000000..b0ae2ba62 --- /dev/null +++ b/src/concrete_sci/profiling.ts @@ -0,0 +1,14 @@ +/** concrete_sci profiling module — tsb analytics library. */ +export interface ConcreteSciProfilingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciProfilingResult { values: number[]; converged: boolean; } +export function computeConcreteSciProfiling(data: number[], opts: ConcreteSciProfilingOptions = {}): ConcreteSciProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciProfiling }; diff --git a/src/concrete_sci/projection.ts b/src/concrete_sci/projection.ts new file mode 100644 index 000000000..eb5bb6858 --- /dev/null +++ b/src/concrete_sci/projection.ts @@ -0,0 +1,14 @@ +/** concrete_sci projection module — tsb analytics library. */ +export interface ConcreteSciProjectionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciProjectionResult { values: number[]; converged: boolean; } +export function computeConcreteSciProjection(data: number[], opts: ConcreteSciProjectionOptions = {}): ConcreteSciProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciProjection }; diff --git a/src/concrete_sci/ranking.ts b/src/concrete_sci/ranking.ts new file mode 100644 index 000000000..8ad7cb57e --- /dev/null +++ b/src/concrete_sci/ranking.ts @@ -0,0 +1,14 @@ +/** concrete_sci ranking module — tsb analytics library. */ +export interface ConcreteSciRankingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciRankingResult { values: number[]; converged: boolean; } +export function computeConcreteSciRanking(data: number[], opts: ConcreteSciRankingOptions = {}): ConcreteSciRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciRanking }; diff --git a/src/concrete_sci/reconstruction.ts b/src/concrete_sci/reconstruction.ts new file mode 100644 index 000000000..6bc94ca90 --- /dev/null +++ b/src/concrete_sci/reconstruction.ts @@ -0,0 +1,14 @@ +/** concrete_sci reconstruction module — tsb analytics library. */ +export interface ConcreteSciReconstructionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciReconstructionResult { values: number[]; converged: boolean; } +export function computeConcreteSciReconstruction(data: number[], opts: ConcreteSciReconstructionOptions = {}): ConcreteSciReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciReconstruction }; diff --git a/src/concrete_sci/registration.ts b/src/concrete_sci/registration.ts new file mode 100644 index 000000000..fdaa98375 --- /dev/null +++ b/src/concrete_sci/registration.ts @@ -0,0 +1,14 @@ +/** concrete_sci registration module — tsb analytics library. */ +export interface ConcreteSciRegistrationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciRegistrationResult { values: number[]; converged: boolean; } +export function computeConcreteSciRegistration(data: number[], opts: ConcreteSciRegistrationOptions = {}): ConcreteSciRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciRegistration }; diff --git a/src/concrete_sci/regression.ts b/src/concrete_sci/regression.ts new file mode 100644 index 000000000..1a5d38799 --- /dev/null +++ b/src/concrete_sci/regression.ts @@ -0,0 +1,14 @@ +/** concrete_sci regression module — tsb analytics library. */ +export interface ConcreteSciRegressionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciRegressionResult { values: number[]; converged: boolean; } +export function computeConcreteSciRegression(data: number[], opts: ConcreteSciRegressionOptions = {}): ConcreteSciRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciRegression }; diff --git a/src/concrete_sci/regularization.ts b/src/concrete_sci/regularization.ts new file mode 100644 index 000000000..b428acee7 --- /dev/null +++ b/src/concrete_sci/regularization.ts @@ -0,0 +1,14 @@ +/** concrete_sci regularization module — tsb analytics library. */ +export interface ConcreteSciRegularizationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciRegularizationResult { values: number[]; converged: boolean; } +export function computeConcreteSciRegularization(data: number[], opts: ConcreteSciRegularizationOptions = {}): ConcreteSciRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciRegularization }; diff --git a/src/concrete_sci/robustness.ts b/src/concrete_sci/robustness.ts new file mode 100644 index 000000000..b22557670 --- /dev/null +++ b/src/concrete_sci/robustness.ts @@ -0,0 +1,14 @@ +/** concrete_sci robustness module — tsb analytics library. */ +export interface ConcreteSciRobustnessOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciRobustnessResult { values: number[]; converged: boolean; } +export function computeConcreteSciRobustness(data: number[], opts: ConcreteSciRobustnessOptions = {}): ConcreteSciRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciRobustness }; diff --git a/src/concrete_sci/sampling.ts b/src/concrete_sci/sampling.ts new file mode 100644 index 000000000..e4a156cfe --- /dev/null +++ b/src/concrete_sci/sampling.ts @@ -0,0 +1,14 @@ +/** concrete_sci sampling module — tsb analytics library. */ +export interface ConcreteSciSamplingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSamplingResult { values: number[]; converged: boolean; } +export function computeConcreteSciSampling(data: number[], opts: ConcreteSciSamplingOptions = {}): ConcreteSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSampling }; diff --git a/src/concrete_sci/sampling2.ts b/src/concrete_sci/sampling2.ts new file mode 100644 index 000000000..08c27cead --- /dev/null +++ b/src/concrete_sci/sampling2.ts @@ -0,0 +1,14 @@ +/** concrete_sci sampling2 module — tsb analytics library. */ +export interface ConcreteSciSamplingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSamplingResult { values: number[]; converged: boolean; } +export function computeConcreteSciSampling(data: number[], opts: ConcreteSciSamplingOptions = {}): ConcreteSciSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSampling }; diff --git a/src/concrete_sci/scaling.ts b/src/concrete_sci/scaling.ts new file mode 100644 index 000000000..256356f4b --- /dev/null +++ b/src/concrete_sci/scaling.ts @@ -0,0 +1,14 @@ +/** concrete_sci scaling module — tsb analytics library. */ +export interface ConcreteSciScalingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciScalingResult { values: number[]; converged: boolean; } +export function computeConcreteSciScaling(data: number[], opts: ConcreteSciScalingOptions = {}): ConcreteSciScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciScaling }; diff --git a/src/concrete_sci/scoring.ts b/src/concrete_sci/scoring.ts new file mode 100644 index 000000000..653638bff --- /dev/null +++ b/src/concrete_sci/scoring.ts @@ -0,0 +1,14 @@ +/** concrete_sci scoring module — tsb analytics library. */ +export interface ConcreteSciScoringOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciScoringResult { values: number[]; converged: boolean; } +export function computeConcreteSciScoring(data: number[], opts: ConcreteSciScoringOptions = {}): ConcreteSciScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciScoring }; diff --git a/src/concrete_sci/segmentation.ts b/src/concrete_sci/segmentation.ts new file mode 100644 index 000000000..cdf6061cc --- /dev/null +++ b/src/concrete_sci/segmentation.ts @@ -0,0 +1,14 @@ +/** concrete_sci segmentation module — tsb analytics library. */ +export interface ConcreteSciSegmentationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSegmentationResult { values: number[]; converged: boolean; } +export function computeConcreteSciSegmentation(data: number[], opts: ConcreteSciSegmentationOptions = {}): ConcreteSciSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSegmentation }; diff --git a/src/concrete_sci/selection.ts b/src/concrete_sci/selection.ts new file mode 100644 index 000000000..d4a32a213 --- /dev/null +++ b/src/concrete_sci/selection.ts @@ -0,0 +1,14 @@ +/** concrete_sci selection module — tsb analytics library. */ +export interface ConcreteSciSelectionOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSelectionResult { values: number[]; converged: boolean; } +export function computeConcreteSciSelection(data: number[], opts: ConcreteSciSelectionOptions = {}): ConcreteSciSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSelection }; diff --git a/src/concrete_sci/sensitivity.ts b/src/concrete_sci/sensitivity.ts new file mode 100644 index 000000000..ee27d25a4 --- /dev/null +++ b/src/concrete_sci/sensitivity.ts @@ -0,0 +1,14 @@ +/** concrete_sci sensitivity module — tsb analytics library. */ +export interface ConcreteSciSensitivityOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSensitivityResult { values: number[]; converged: boolean; } +export function computeConcreteSciSensitivity(data: number[], opts: ConcreteSciSensitivityOptions = {}): ConcreteSciSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSensitivity }; diff --git a/src/concrete_sci/simulation.ts b/src/concrete_sci/simulation.ts new file mode 100644 index 000000000..16119c09b --- /dev/null +++ b/src/concrete_sci/simulation.ts @@ -0,0 +1,14 @@ +/** concrete_sci simulation module — tsb analytics library. */ +export interface ConcreteSciSimulationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSimulationResult { values: number[]; converged: boolean; } +export function computeConcreteSciSimulation(data: number[], opts: ConcreteSciSimulationOptions = {}): ConcreteSciSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSimulation }; diff --git a/src/concrete_sci/smoothing.ts b/src/concrete_sci/smoothing.ts new file mode 100644 index 000000000..8cf2548ca --- /dev/null +++ b/src/concrete_sci/smoothing.ts @@ -0,0 +1,14 @@ +/** concrete_sci smoothing module — tsb analytics library. */ +export interface ConcreteSciSmoothingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSmoothingResult { values: number[]; converged: boolean; } +export function computeConcreteSciSmoothing(data: number[], opts: ConcreteSciSmoothingOptions = {}): ConcreteSciSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSmoothing }; diff --git a/src/concrete_sci/stability.ts b/src/concrete_sci/stability.ts new file mode 100644 index 000000000..64cfe6340 --- /dev/null +++ b/src/concrete_sci/stability.ts @@ -0,0 +1,14 @@ +/** concrete_sci stability module — tsb analytics library. */ +export interface ConcreteSciStabilityOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciStabilityResult { values: number[]; converged: boolean; } +export function computeConcreteSciStability(data: number[], opts: ConcreteSciStabilityOptions = {}): ConcreteSciStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciStability }; diff --git a/src/concrete_sci/stacking.ts b/src/concrete_sci/stacking.ts new file mode 100644 index 000000000..e00ee2eb9 --- /dev/null +++ b/src/concrete_sci/stacking.ts @@ -0,0 +1,14 @@ +/** concrete_sci stacking module — tsb analytics library. */ +export interface ConcreteSciStackingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciStackingResult { values: number[]; converged: boolean; } +export function computeConcreteSciStacking(data: number[], opts: ConcreteSciStackingOptions = {}): ConcreteSciStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciStacking }; diff --git a/src/concrete_sci/standardization.ts b/src/concrete_sci/standardization.ts new file mode 100644 index 000000000..62dba9fac --- /dev/null +++ b/src/concrete_sci/standardization.ts @@ -0,0 +1,14 @@ +/** concrete_sci standardization module — tsb analytics library. */ +export interface ConcreteSciStandardizationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciStandardizationResult { values: number[]; converged: boolean; } +export function computeConcreteSciStandardization(data: number[], opts: ConcreteSciStandardizationOptions = {}): ConcreteSciStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciStandardization }; diff --git a/src/concrete_sci/static.ts b/src/concrete_sci/static.ts new file mode 100644 index 000000000..74a2e45f4 --- /dev/null +++ b/src/concrete_sci/static.ts @@ -0,0 +1,14 @@ +/** concrete_sci static module — tsb analytics library. */ +export interface ConcreteSciStaticOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciStaticResult { values: number[]; converged: boolean; } +export function computeConcreteSciStatic(data: number[], opts: ConcreteSciStaticOptions = {}): ConcreteSciStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciStatic }; diff --git a/src/concrete_sci/stochastic.ts b/src/concrete_sci/stochastic.ts new file mode 100644 index 000000000..f63235593 --- /dev/null +++ b/src/concrete_sci/stochastic.ts @@ -0,0 +1,14 @@ +/** concrete_sci stochastic module — tsb analytics library. */ +export interface ConcreteSciStochasticOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciStochasticResult { values: number[]; converged: boolean; } +export function computeConcreteSciStochastic(data: number[], opts: ConcreteSciStochasticOptions = {}): ConcreteSciStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciStochastic }; diff --git a/src/concrete_sci/synthesis.ts b/src/concrete_sci/synthesis.ts new file mode 100644 index 000000000..b62eacecd --- /dev/null +++ b/src/concrete_sci/synthesis.ts @@ -0,0 +1,14 @@ +/** concrete_sci synthesis module — tsb analytics library. */ +export interface ConcreteSciSynthesisOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciSynthesisResult { values: number[]; converged: boolean; } +export function computeConcreteSciSynthesis(data: number[], opts: ConcreteSciSynthesisOptions = {}): ConcreteSciSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciSynthesis }; diff --git a/src/concrete_sci/topology.ts b/src/concrete_sci/topology.ts new file mode 100644 index 000000000..3c3b90a7a --- /dev/null +++ b/src/concrete_sci/topology.ts @@ -0,0 +1,14 @@ +/** concrete_sci topology module — tsb analytics library. */ +export interface ConcreteSciTopologyOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciTopologyResult { values: number[]; converged: boolean; } +export function computeConcreteSciTopology(data: number[], opts: ConcreteSciTopologyOptions = {}): ConcreteSciTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciTopology }; diff --git a/src/concrete_sci/tracking.ts b/src/concrete_sci/tracking.ts new file mode 100644 index 000000000..f8eca00a7 --- /dev/null +++ b/src/concrete_sci/tracking.ts @@ -0,0 +1,14 @@ +/** concrete_sci tracking module — tsb analytics library. */ +export interface ConcreteSciTrackingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciTrackingResult { values: number[]; converged: boolean; } +export function computeConcreteSciTracking(data: number[], opts: ConcreteSciTrackingOptions = {}): ConcreteSciTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciTracking }; diff --git a/src/concrete_sci/transform.ts b/src/concrete_sci/transform.ts new file mode 100644 index 000000000..4b559b1c0 --- /dev/null +++ b/src/concrete_sci/transform.ts @@ -0,0 +1,14 @@ +/** concrete_sci transform module — tsb analytics library. */ +export interface ConcreteSciTransformOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciTransformResult { values: number[]; converged: boolean; } +export function computeConcreteSciTransform(data: number[], opts: ConcreteSciTransformOptions = {}): ConcreteSciTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciTransform }; diff --git a/src/concrete_sci/uncertainty.ts b/src/concrete_sci/uncertainty.ts new file mode 100644 index 000000000..f235a2c8b --- /dev/null +++ b/src/concrete_sci/uncertainty.ts @@ -0,0 +1,14 @@ +/** concrete_sci uncertainty module — tsb analytics library. */ +export interface ConcreteSciUncertaintyOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciUncertaintyResult { values: number[]; converged: boolean; } +export function computeConcreteSciUncertainty(data: number[], opts: ConcreteSciUncertaintyOptions = {}): ConcreteSciUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciUncertainty }; diff --git a/src/concrete_sci/validation.ts b/src/concrete_sci/validation.ts new file mode 100644 index 000000000..5b30edd32 --- /dev/null +++ b/src/concrete_sci/validation.ts @@ -0,0 +1,14 @@ +/** concrete_sci validation module — tsb analytics library. */ +export interface ConcreteSciValidationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciValidationResult { values: number[]; converged: boolean; } +export function computeConcreteSciValidation(data: number[], opts: ConcreteSciValidationOptions = {}): ConcreteSciValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciValidation }; diff --git a/src/concrete_sci/verification.ts b/src/concrete_sci/verification.ts new file mode 100644 index 000000000..13ed20950 --- /dev/null +++ b/src/concrete_sci/verification.ts @@ -0,0 +1,14 @@ +/** concrete_sci verification module — tsb analytics library. */ +export interface ConcreteSciVerificationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciVerificationResult { values: number[]; converged: boolean; } +export function computeConcreteSciVerification(data: number[], opts: ConcreteSciVerificationOptions = {}): ConcreteSciVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciVerification }; diff --git a/src/concrete_sci/visualization.ts b/src/concrete_sci/visualization.ts new file mode 100644 index 000000000..c7237f820 --- /dev/null +++ b/src/concrete_sci/visualization.ts @@ -0,0 +1,14 @@ +/** concrete_sci visualization module — tsb analytics library. */ +export interface ConcreteSciVisualizationOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciVisualizationResult { values: number[]; converged: boolean; } +export function computeConcreteSciVisualization(data: number[], opts: ConcreteSciVisualizationOptions = {}): ConcreteSciVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciVisualization }; diff --git a/src/concrete_sci/voting.ts b/src/concrete_sci/voting.ts new file mode 100644 index 000000000..4180d7fe5 --- /dev/null +++ b/src/concrete_sci/voting.ts @@ -0,0 +1,14 @@ +/** concrete_sci voting module — tsb analytics library. */ +export interface ConcreteSciVotingOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciVotingResult { values: number[]; converged: boolean; } +export function computeConcreteSciVoting(data: number[], opts: ConcreteSciVotingOptions = {}): ConcreteSciVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciVoting }; diff --git a/src/concrete_sci/wavelet.ts b/src/concrete_sci/wavelet.ts new file mode 100644 index 000000000..a026201ca --- /dev/null +++ b/src/concrete_sci/wavelet.ts @@ -0,0 +1,14 @@ +/** concrete_sci wavelet module — tsb analytics library. */ +export interface ConcreteSciWaveletOptions { tol?: number; maxIter?: number; } +export interface ConcreteSciWaveletResult { values: number[]; converged: boolean; } +export function computeConcreteSciWavelet(data: number[], opts: ConcreteSciWaveletOptions = {}): ConcreteSciWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeConcreteSciWavelet }; diff --git a/src/continuum_mech/adaptation.ts b/src/continuum_mech/adaptation.ts new file mode 100644 index 000000000..64a5974db --- /dev/null +++ b/src/continuum_mech/adaptation.ts @@ -0,0 +1,14 @@ +/** continuum_mech adaptation module — tsb analytics library. */ +export interface ContinuumMechAdaptationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechAdaptationResult { values: number[]; converged: boolean; } +export function computeContinuumMechAdaptation(data: number[], opts: ContinuumMechAdaptationOptions = {}): ContinuumMechAdaptationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechAdaptation }; diff --git a/src/continuum_mech/aggregation.ts b/src/continuum_mech/aggregation.ts new file mode 100644 index 000000000..9b8062011 --- /dev/null +++ b/src/continuum_mech/aggregation.ts @@ -0,0 +1,14 @@ +/** continuum_mech aggregation module — tsb analytics library. */ +export interface ContinuumMechAggregationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechAggregationResult { values: number[]; converged: boolean; } +export function computeContinuumMechAggregation(data: number[], opts: ContinuumMechAggregationOptions = {}): ContinuumMechAggregationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechAggregation }; diff --git a/src/continuum_mech/algebra.ts b/src/continuum_mech/algebra.ts new file mode 100644 index 000000000..ba395320f --- /dev/null +++ b/src/continuum_mech/algebra.ts @@ -0,0 +1,14 @@ +/** continuum_mech algebra module — tsb analytics library. */ +export interface ContinuumMechAlgebraOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechAlgebraResult { values: number[]; converged: boolean; } +export function computeContinuumMechAlgebra(data: number[], opts: ContinuumMechAlgebraOptions = {}): ContinuumMechAlgebraResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechAlgebra }; diff --git a/src/continuum_mech/alignment.ts b/src/continuum_mech/alignment.ts new file mode 100644 index 000000000..99fb14a07 --- /dev/null +++ b/src/continuum_mech/alignment.ts @@ -0,0 +1,14 @@ +/** continuum_mech alignment module — tsb analytics library. */ +export interface ContinuumMechAlignmentOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechAlignmentResult { values: number[]; converged: boolean; } +export function computeContinuumMechAlignment(data: number[], opts: ContinuumMechAlignmentOptions = {}): ContinuumMechAlignmentResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechAlignment }; diff --git a/src/continuum_mech/analysis.ts b/src/continuum_mech/analysis.ts new file mode 100644 index 000000000..ba10d4fb8 --- /dev/null +++ b/src/continuum_mech/analysis.ts @@ -0,0 +1,14 @@ +/** continuum_mech analysis module — tsb analytics library. */ +export interface ContinuumMechAnalysisOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechAnalysisResult { values: number[]; converged: boolean; } +export function computeContinuumMechAnalysis(data: number[], opts: ContinuumMechAnalysisOptions = {}): ContinuumMechAnalysisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechAnalysis }; diff --git a/src/continuum_mech/augmentation.ts b/src/continuum_mech/augmentation.ts new file mode 100644 index 000000000..886c62053 --- /dev/null +++ b/src/continuum_mech/augmentation.ts @@ -0,0 +1,14 @@ +/** continuum_mech augmentation module — tsb analytics library. */ +export interface ContinuumMechAugmentationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechAugmentationResult { values: number[]; converged: boolean; } +export function computeContinuumMechAugmentation(data: number[], opts: ContinuumMechAugmentationOptions = {}): ContinuumMechAugmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechAugmentation }; diff --git a/src/continuum_mech/bagging.ts b/src/continuum_mech/bagging.ts new file mode 100644 index 000000000..677942731 --- /dev/null +++ b/src/continuum_mech/bagging.ts @@ -0,0 +1,14 @@ +/** continuum_mech bagging module — tsb analytics library. */ +export interface ContinuumMechBaggingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechBaggingResult { values: number[]; converged: boolean; } +export function computeContinuumMechBagging(data: number[], opts: ContinuumMechBaggingOptions = {}): ContinuumMechBaggingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechBagging }; diff --git a/src/continuum_mech/basis.ts b/src/continuum_mech/basis.ts new file mode 100644 index 000000000..4301769a3 --- /dev/null +++ b/src/continuum_mech/basis.ts @@ -0,0 +1,14 @@ +/** continuum_mech basis module — tsb analytics library. */ +export interface ContinuumMechBasisOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechBasisResult { values: number[]; converged: boolean; } +export function computeContinuumMechBasis(data: number[], opts: ContinuumMechBasisOptions = {}): ContinuumMechBasisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechBasis }; diff --git a/src/continuum_mech/benchmarking.ts b/src/continuum_mech/benchmarking.ts new file mode 100644 index 000000000..db550c87e --- /dev/null +++ b/src/continuum_mech/benchmarking.ts @@ -0,0 +1,14 @@ +/** continuum_mech benchmarking module — tsb analytics library. */ +export interface ContinuumMechBenchmarkingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechBenchmarkingResult { values: number[]; converged: boolean; } +export function computeContinuumMechBenchmarking(data: number[], opts: ContinuumMechBenchmarkingOptions = {}): ContinuumMechBenchmarkingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechBenchmarking }; diff --git a/src/continuum_mech/blending.ts b/src/continuum_mech/blending.ts new file mode 100644 index 000000000..59a161e1c --- /dev/null +++ b/src/continuum_mech/blending.ts @@ -0,0 +1,14 @@ +/** continuum_mech blending module — tsb analytics library. */ +export interface ContinuumMechBlendingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechBlendingResult { values: number[]; converged: boolean; } +export function computeContinuumMechBlending(data: number[], opts: ContinuumMechBlendingOptions = {}): ContinuumMechBlendingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechBlending }; diff --git a/src/continuum_mech/boosting.ts b/src/continuum_mech/boosting.ts new file mode 100644 index 000000000..c77446da0 --- /dev/null +++ b/src/continuum_mech/boosting.ts @@ -0,0 +1,14 @@ +/** continuum_mech boosting module — tsb analytics library. */ +export interface ContinuumMechBoostingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechBoostingResult { values: number[]; converged: boolean; } +export function computeContinuumMechBoosting(data: number[], opts: ContinuumMechBoostingOptions = {}): ContinuumMechBoostingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechBoosting }; diff --git a/src/continuum_mech/bootstrap.ts b/src/continuum_mech/bootstrap.ts new file mode 100644 index 000000000..b5460d09f --- /dev/null +++ b/src/continuum_mech/bootstrap.ts @@ -0,0 +1,14 @@ +/** continuum_mech bootstrap module — tsb analytics library. */ +export interface ContinuumMechBootstrapOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechBootstrapResult { values: number[]; converged: boolean; } +export function computeContinuumMechBootstrap(data: number[], opts: ContinuumMechBootstrapOptions = {}): ContinuumMechBootstrapResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechBootstrap }; diff --git a/src/continuum_mech/calculus.ts b/src/continuum_mech/calculus.ts new file mode 100644 index 000000000..29583ccdc --- /dev/null +++ b/src/continuum_mech/calculus.ts @@ -0,0 +1,14 @@ +/** continuum_mech calculus module — tsb analytics library. */ +export interface ContinuumMechCalculusOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCalculusResult { values: number[]; converged: boolean; } +export function computeContinuumMechCalculus(data: number[], opts: ContinuumMechCalculusOptions = {}): ContinuumMechCalculusResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCalculus }; diff --git a/src/continuum_mech/calibration.ts b/src/continuum_mech/calibration.ts new file mode 100644 index 000000000..be5d36707 --- /dev/null +++ b/src/continuum_mech/calibration.ts @@ -0,0 +1,14 @@ +/** continuum_mech calibration module — tsb analytics library. */ +export interface ContinuumMechCalibrationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCalibrationResult { values: number[]; converged: boolean; } +export function computeContinuumMechCalibration(data: number[], opts: ContinuumMechCalibrationOptions = {}): ContinuumMechCalibrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCalibration }; diff --git a/src/continuum_mech/characterization.ts b/src/continuum_mech/characterization.ts new file mode 100644 index 000000000..9f80d3f3d --- /dev/null +++ b/src/continuum_mech/characterization.ts @@ -0,0 +1,14 @@ +/** continuum_mech characterization module — tsb analytics library. */ +export interface ContinuumMechCharacterizationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCharacterizationResult { values: number[]; converged: boolean; } +export function computeContinuumMechCharacterization(data: number[], opts: ContinuumMechCharacterizationOptions = {}): ContinuumMechCharacterizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCharacterization }; diff --git a/src/continuum_mech/classification.ts b/src/continuum_mech/classification.ts new file mode 100644 index 000000000..1b4a58879 --- /dev/null +++ b/src/continuum_mech/classification.ts @@ -0,0 +1,14 @@ +/** continuum_mech classification module — tsb analytics library. */ +export interface ContinuumMechClassificationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechClassificationResult { values: number[]; converged: boolean; } +export function computeContinuumMechClassification(data: number[], opts: ContinuumMechClassificationOptions = {}): ContinuumMechClassificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechClassification }; diff --git a/src/continuum_mech/clustering.ts b/src/continuum_mech/clustering.ts new file mode 100644 index 000000000..ffdac6531 --- /dev/null +++ b/src/continuum_mech/clustering.ts @@ -0,0 +1,14 @@ +/** continuum_mech clustering module — tsb analytics library. */ +export interface ContinuumMechClusteringOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechClusteringResult { values: number[]; converged: boolean; } +export function computeContinuumMechClustering(data: number[], opts: ContinuumMechClusteringOptions = {}): ContinuumMechClusteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechClustering }; diff --git a/src/continuum_mech/compression.ts b/src/continuum_mech/compression.ts new file mode 100644 index 000000000..0cb70b18b --- /dev/null +++ b/src/continuum_mech/compression.ts @@ -0,0 +1,14 @@ +/** continuum_mech compression module — tsb analytics library. */ +export interface ContinuumMechCompressionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCompressionResult { values: number[]; converged: boolean; } +export function computeContinuumMechCompression(data: number[], opts: ContinuumMechCompressionOptions = {}): ContinuumMechCompressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCompression }; diff --git a/src/continuum_mech/continuous.ts b/src/continuum_mech/continuous.ts new file mode 100644 index 000000000..b7a37d026 --- /dev/null +++ b/src/continuum_mech/continuous.ts @@ -0,0 +1,14 @@ +/** continuum_mech continuous module — tsb analytics library. */ +export interface ContinuumMechContinuousOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechContinuousResult { values: number[]; converged: boolean; } +export function computeContinuumMechContinuous(data: number[], opts: ContinuumMechContinuousOptions = {}): ContinuumMechContinuousResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechContinuous }; diff --git a/src/continuum_mech/control.ts b/src/continuum_mech/control.ts new file mode 100644 index 000000000..357e81d19 --- /dev/null +++ b/src/continuum_mech/control.ts @@ -0,0 +1,14 @@ +/** continuum_mech control module — tsb analytics library. */ +export interface ContinuumMechControlOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechControlResult { values: number[]; converged: boolean; } +export function computeContinuumMechControl(data: number[], opts: ContinuumMechControlOptions = {}): ContinuumMechControlResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechControl }; diff --git a/src/continuum_mech/convergence.ts b/src/continuum_mech/convergence.ts new file mode 100644 index 000000000..9a64dc580 --- /dev/null +++ b/src/continuum_mech/convergence.ts @@ -0,0 +1,14 @@ +/** continuum_mech convergence module — tsb analytics library. */ +export interface ContinuumMechConvergenceOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechConvergenceResult { values: number[]; converged: boolean; } +export function computeContinuumMechConvergence(data: number[], opts: ContinuumMechConvergenceOptions = {}): ContinuumMechConvergenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechConvergence }; diff --git a/src/continuum_mech/convex.ts b/src/continuum_mech/convex.ts new file mode 100644 index 000000000..3d918fbdd --- /dev/null +++ b/src/continuum_mech/convex.ts @@ -0,0 +1,14 @@ +/** continuum_mech convex module — tsb analytics library. */ +export interface ContinuumMechConvexOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechConvexResult { values: number[]; converged: boolean; } +export function computeContinuumMechConvex(data: number[], opts: ContinuumMechConvexOptions = {}): ContinuumMechConvexResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechConvex }; diff --git a/src/continuum_mech/correlation.ts b/src/continuum_mech/correlation.ts new file mode 100644 index 000000000..80e088cce --- /dev/null +++ b/src/continuum_mech/correlation.ts @@ -0,0 +1,14 @@ +/** continuum_mech correlation module — tsb analytics library. */ +export interface ContinuumMechCorrelationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCorrelationResult { values: number[]; converged: boolean; } +export function computeContinuumMechCorrelation(data: number[], opts: ContinuumMechCorrelationOptions = {}): ContinuumMechCorrelationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCorrelation }; diff --git a/src/continuum_mech/covariance.ts b/src/continuum_mech/covariance.ts new file mode 100644 index 000000000..5cde03a2f --- /dev/null +++ b/src/continuum_mech/covariance.ts @@ -0,0 +1,14 @@ +/** continuum_mech covariance module — tsb analytics library. */ +export interface ContinuumMechCovarianceOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCovarianceResult { values: number[]; converged: boolean; } +export function computeContinuumMechCovariance(data: number[], opts: ContinuumMechCovarianceOptions = {}): ContinuumMechCovarianceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCovariance }; diff --git a/src/continuum_mech/cross_validation.ts b/src/continuum_mech/cross_validation.ts new file mode 100644 index 000000000..b5ff3be65 --- /dev/null +++ b/src/continuum_mech/cross_validation.ts @@ -0,0 +1,14 @@ +/** continuum_mech cross_validation module — tsb analytics library. */ +export interface ContinuumMechCrossValidationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechCrossValidationResult { values: number[]; converged: boolean; } +export function computeContinuumMechCrossValidation(data: number[], opts: ContinuumMechCrossValidationOptions = {}): ContinuumMechCrossValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechCrossValidation }; diff --git a/src/continuum_mech/decoding.ts b/src/continuum_mech/decoding.ts new file mode 100644 index 000000000..5f0779680 --- /dev/null +++ b/src/continuum_mech/decoding.ts @@ -0,0 +1,14 @@ +/** continuum_mech decoding module — tsb analytics library. */ +export interface ContinuumMechDecodingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDecodingResult { values: number[]; converged: boolean; } +export function computeContinuumMechDecoding(data: number[], opts: ContinuumMechDecodingOptions = {}): ContinuumMechDecodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDecoding }; diff --git a/src/continuum_mech/decomposition.ts b/src/continuum_mech/decomposition.ts new file mode 100644 index 000000000..73e7b5adc --- /dev/null +++ b/src/continuum_mech/decomposition.ts @@ -0,0 +1,14 @@ +/** continuum_mech decomposition module — tsb analytics library. */ +export interface ContinuumMechDecompositionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDecompositionResult { values: number[]; converged: boolean; } +export function computeContinuumMechDecomposition(data: number[], opts: ContinuumMechDecompositionOptions = {}): ContinuumMechDecompositionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDecomposition }; diff --git a/src/continuum_mech/detection.ts b/src/continuum_mech/detection.ts new file mode 100644 index 000000000..5c4990f6d --- /dev/null +++ b/src/continuum_mech/detection.ts @@ -0,0 +1,14 @@ +/** continuum_mech detection module — tsb analytics library. */ +export interface ContinuumMechDetectionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDetectionResult { values: number[]; converged: boolean; } +export function computeContinuumMechDetection(data: number[], opts: ContinuumMechDetectionOptions = {}): ContinuumMechDetectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDetection }; diff --git a/src/continuum_mech/deterministic.ts b/src/continuum_mech/deterministic.ts new file mode 100644 index 000000000..af6331f45 --- /dev/null +++ b/src/continuum_mech/deterministic.ts @@ -0,0 +1,14 @@ +/** continuum_mech deterministic module — tsb analytics library. */ +export interface ContinuumMechDeterministicOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDeterministicResult { values: number[]; converged: boolean; } +export function computeContinuumMechDeterministic(data: number[], opts: ContinuumMechDeterministicOptions = {}): ContinuumMechDeterministicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDeterministic }; diff --git a/src/continuum_mech/diagnostics.ts b/src/continuum_mech/diagnostics.ts new file mode 100644 index 000000000..4ce375687 --- /dev/null +++ b/src/continuum_mech/diagnostics.ts @@ -0,0 +1,14 @@ +/** continuum_mech diagnostics module — tsb analytics library. */ +export interface ContinuumMechDiagnosticsOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDiagnosticsResult { values: number[]; converged: boolean; } +export function computeContinuumMechDiagnostics(data: number[], opts: ContinuumMechDiagnosticsOptions = {}): ContinuumMechDiagnosticsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDiagnostics }; diff --git a/src/continuum_mech/differential.ts b/src/continuum_mech/differential.ts new file mode 100644 index 000000000..abbe0caa5 --- /dev/null +++ b/src/continuum_mech/differential.ts @@ -0,0 +1,14 @@ +/** continuum_mech differential module — tsb analytics library. */ +export interface ContinuumMechDifferentialOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDifferentialResult { values: number[]; converged: boolean; } +export function computeContinuumMechDifferential(data: number[], opts: ContinuumMechDifferentialOptions = {}): ContinuumMechDifferentialResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDifferential }; diff --git a/src/continuum_mech/discrete.ts b/src/continuum_mech/discrete.ts new file mode 100644 index 000000000..ac3da671d --- /dev/null +++ b/src/continuum_mech/discrete.ts @@ -0,0 +1,14 @@ +/** continuum_mech discrete module — tsb analytics library. */ +export interface ContinuumMechDiscreteOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDiscreteResult { values: number[]; converged: boolean; } +export function computeContinuumMechDiscrete(data: number[], opts: ContinuumMechDiscreteOptions = {}): ContinuumMechDiscreteResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDiscrete }; diff --git a/src/continuum_mech/distribution.ts b/src/continuum_mech/distribution.ts new file mode 100644 index 000000000..6eaaac51c --- /dev/null +++ b/src/continuum_mech/distribution.ts @@ -0,0 +1,14 @@ +/** continuum_mech distribution module — tsb analytics library. */ +export interface ContinuumMechDistributionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDistributionResult { values: number[]; converged: boolean; } +export function computeContinuumMechDistribution(data: number[], opts: ContinuumMechDistributionOptions = {}): ContinuumMechDistributionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDistribution }; diff --git a/src/continuum_mech/dynamic.ts b/src/continuum_mech/dynamic.ts new file mode 100644 index 000000000..134f68fe1 --- /dev/null +++ b/src/continuum_mech/dynamic.ts @@ -0,0 +1,14 @@ +/** continuum_mech dynamic module — tsb analytics library. */ +export interface ContinuumMechDynamicOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechDynamicResult { values: number[]; converged: boolean; } +export function computeContinuumMechDynamic(data: number[], opts: ContinuumMechDynamicOptions = {}): ContinuumMechDynamicResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechDynamic }; diff --git a/src/continuum_mech/embedding.ts b/src/continuum_mech/embedding.ts new file mode 100644 index 000000000..a208bfe92 --- /dev/null +++ b/src/continuum_mech/embedding.ts @@ -0,0 +1,14 @@ +/** continuum_mech embedding module — tsb analytics library. */ +export interface ContinuumMechEmbeddingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechEmbeddingResult { values: number[]; converged: boolean; } +export function computeContinuumMechEmbedding(data: number[], opts: ContinuumMechEmbeddingOptions = {}): ContinuumMechEmbeddingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechEmbedding }; diff --git a/src/continuum_mech/encoding.ts b/src/continuum_mech/encoding.ts new file mode 100644 index 000000000..9173b2de5 --- /dev/null +++ b/src/continuum_mech/encoding.ts @@ -0,0 +1,14 @@ +/** continuum_mech encoding module — tsb analytics library. */ +export interface ContinuumMechEncodingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechEncodingResult { values: number[]; converged: boolean; } +export function computeContinuumMechEncoding(data: number[], opts: ContinuumMechEncodingOptions = {}): ContinuumMechEncodingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechEncoding }; diff --git a/src/continuum_mech/ensemble.ts b/src/continuum_mech/ensemble.ts new file mode 100644 index 000000000..c7f0c3454 --- /dev/null +++ b/src/continuum_mech/ensemble.ts @@ -0,0 +1,14 @@ +/** continuum_mech ensemble module — tsb analytics library. */ +export interface ContinuumMechEnsembleOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechEnsembleResult { values: number[]; converged: boolean; } +export function computeContinuumMechEnsemble(data: number[], opts: ContinuumMechEnsembleOptions = {}): ContinuumMechEnsembleResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechEnsemble }; diff --git a/src/continuum_mech/estimation.ts b/src/continuum_mech/estimation.ts new file mode 100644 index 000000000..6207ed450 --- /dev/null +++ b/src/continuum_mech/estimation.ts @@ -0,0 +1,14 @@ +/** continuum_mech estimation module — tsb analytics library. */ +export interface ContinuumMechEstimationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechEstimationResult { values: number[]; converged: boolean; } +export function computeContinuumMechEstimation(data: number[], opts: ContinuumMechEstimationOptions = {}): ContinuumMechEstimationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechEstimation }; diff --git a/src/continuum_mech/evaluation.ts b/src/continuum_mech/evaluation.ts new file mode 100644 index 000000000..247f5944d --- /dev/null +++ b/src/continuum_mech/evaluation.ts @@ -0,0 +1,14 @@ +/** continuum_mech evaluation module — tsb analytics library. */ +export interface ContinuumMechEvaluationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechEvaluationResult { values: number[]; converged: boolean; } +export function computeContinuumMechEvaluation(data: number[], opts: ContinuumMechEvaluationOptions = {}): ContinuumMechEvaluationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechEvaluation }; diff --git a/src/continuum_mech/extrapolation.ts b/src/continuum_mech/extrapolation.ts new file mode 100644 index 000000000..d50e53535 --- /dev/null +++ b/src/continuum_mech/extrapolation.ts @@ -0,0 +1,14 @@ +/** continuum_mech extrapolation module — tsb analytics library. */ +export interface ContinuumMechExtrapolationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechExtrapolationResult { values: number[]; converged: boolean; } +export function computeContinuumMechExtrapolation(data: number[], opts: ContinuumMechExtrapolationOptions = {}): ContinuumMechExtrapolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechExtrapolation }; diff --git a/src/continuum_mech/features.ts b/src/continuum_mech/features.ts new file mode 100644 index 000000000..eef972675 --- /dev/null +++ b/src/continuum_mech/features.ts @@ -0,0 +1,14 @@ +/** continuum_mech features module — tsb analytics library. */ +export interface ContinuumMechFeaturesOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechFeaturesResult { values: number[]; converged: boolean; } +export function computeContinuumMechFeatures(data: number[], opts: ContinuumMechFeaturesOptions = {}): ContinuumMechFeaturesResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechFeatures }; diff --git a/src/continuum_mech/feedback.ts b/src/continuum_mech/feedback.ts new file mode 100644 index 000000000..e362e33c3 --- /dev/null +++ b/src/continuum_mech/feedback.ts @@ -0,0 +1,14 @@ +/** continuum_mech feedback module — tsb analytics library. */ +export interface ContinuumMechFeedbackOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechFeedbackResult { values: number[]; converged: boolean; } +export function computeContinuumMechFeedback(data: number[], opts: ContinuumMechFeedbackOptions = {}): ContinuumMechFeedbackResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechFeedback }; diff --git a/src/continuum_mech/filtering.ts b/src/continuum_mech/filtering.ts new file mode 100644 index 000000000..25f7a7f47 --- /dev/null +++ b/src/continuum_mech/filtering.ts @@ -0,0 +1,14 @@ +/** continuum_mech filtering module — tsb analytics library. */ +export interface ContinuumMechFilteringOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechFilteringResult { values: number[]; converged: boolean; } +export function computeContinuumMechFiltering(data: number[], opts: ContinuumMechFilteringOptions = {}): ContinuumMechFilteringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechFiltering }; diff --git a/src/continuum_mech/fourier.ts b/src/continuum_mech/fourier.ts new file mode 100644 index 000000000..b57dd6d65 --- /dev/null +++ b/src/continuum_mech/fourier.ts @@ -0,0 +1,14 @@ +/** continuum_mech fourier module — tsb analytics library. */ +export interface ContinuumMechFourierOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechFourierResult { values: number[]; converged: boolean; } +export function computeContinuumMechFourier(data: number[], opts: ContinuumMechFourierOptions = {}): ContinuumMechFourierResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechFourier }; diff --git a/src/continuum_mech/fusion.ts b/src/continuum_mech/fusion.ts new file mode 100644 index 000000000..76db05e24 --- /dev/null +++ b/src/continuum_mech/fusion.ts @@ -0,0 +1,14 @@ +/** continuum_mech fusion module — tsb analytics library. */ +export interface ContinuumMechFusionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechFusionResult { values: number[]; converged: boolean; } +export function computeContinuumMechFusion(data: number[], opts: ContinuumMechFusionOptions = {}): ContinuumMechFusionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechFusion }; diff --git a/src/continuum_mech/generation.ts b/src/continuum_mech/generation.ts new file mode 100644 index 000000000..f3d875c7c --- /dev/null +++ b/src/continuum_mech/generation.ts @@ -0,0 +1,14 @@ +/** continuum_mech generation module — tsb analytics library. */ +export interface ContinuumMechGenerationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechGenerationResult { values: number[]; converged: boolean; } +export function computeContinuumMechGeneration(data: number[], opts: ContinuumMechGenerationOptions = {}): ContinuumMechGenerationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechGeneration }; diff --git a/src/continuum_mech/geometry.ts b/src/continuum_mech/geometry.ts new file mode 100644 index 000000000..b06d07b67 --- /dev/null +++ b/src/continuum_mech/geometry.ts @@ -0,0 +1,14 @@ +/** continuum_mech geometry module — tsb analytics library. */ +export interface ContinuumMechGeometryOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechGeometryResult { values: number[]; converged: boolean; } +export function computeContinuumMechGeometry(data: number[], opts: ContinuumMechGeometryOptions = {}): ContinuumMechGeometryResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechGeometry }; diff --git a/src/continuum_mech/gradient.ts b/src/continuum_mech/gradient.ts new file mode 100644 index 000000000..d2f433870 --- /dev/null +++ b/src/continuum_mech/gradient.ts @@ -0,0 +1,14 @@ +/** continuum_mech gradient module — tsb analytics library. */ +export interface ContinuumMechGradientOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechGradientResult { values: number[]; converged: boolean; } +export function computeContinuumMechGradient(data: number[], opts: ContinuumMechGradientOptions = {}): ContinuumMechGradientResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechGradient }; diff --git a/src/continuum_mech/hessian.ts b/src/continuum_mech/hessian.ts new file mode 100644 index 000000000..da628309e --- /dev/null +++ b/src/continuum_mech/hessian.ts @@ -0,0 +1,14 @@ +/** continuum_mech hessian module — tsb analytics library. */ +export interface ContinuumMechHessianOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechHessianResult { values: number[]; converged: boolean; } +export function computeContinuumMechHessian(data: number[], opts: ContinuumMechHessianOptions = {}): ContinuumMechHessianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechHessian }; diff --git a/src/continuum_mech/hypothesis.ts b/src/continuum_mech/hypothesis.ts new file mode 100644 index 000000000..08d7a9570 --- /dev/null +++ b/src/continuum_mech/hypothesis.ts @@ -0,0 +1,14 @@ +/** continuum_mech hypothesis module — tsb analytics library. */ +export interface ContinuumMechHypothesisOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechHypothesisResult { values: number[]; converged: boolean; } +export function computeContinuumMechHypothesis(data: number[], opts: ContinuumMechHypothesisOptions = {}): ContinuumMechHypothesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechHypothesis }; diff --git a/src/continuum_mech/inference.ts b/src/continuum_mech/inference.ts new file mode 100644 index 000000000..0fb89ad78 --- /dev/null +++ b/src/continuum_mech/inference.ts @@ -0,0 +1,14 @@ +/** continuum_mech inference module — tsb analytics library. */ +export interface ContinuumMechInferenceOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechInferenceResult { values: number[]; converged: boolean; } +export function computeContinuumMechInference(data: number[], opts: ContinuumMechInferenceOptions = {}): ContinuumMechInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechInference }; diff --git a/src/continuum_mech/inference2.ts b/src/continuum_mech/inference2.ts new file mode 100644 index 000000000..aede6b2c3 --- /dev/null +++ b/src/continuum_mech/inference2.ts @@ -0,0 +1,14 @@ +/** continuum_mech inference2 module — tsb analytics library. */ +export interface ContinuumMechInferenceOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechInferenceResult { values: number[]; converged: boolean; } +export function computeContinuumMechInference(data: number[], opts: ContinuumMechInferenceOptions = {}): ContinuumMechInferenceResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechInference }; diff --git a/src/continuum_mech/integral.ts b/src/continuum_mech/integral.ts new file mode 100644 index 000000000..256054fe1 --- /dev/null +++ b/src/continuum_mech/integral.ts @@ -0,0 +1,14 @@ +/** continuum_mech integral module — tsb analytics library. */ +export interface ContinuumMechIntegralOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechIntegralResult { values: number[]; converged: boolean; } +export function computeContinuumMechIntegral(data: number[], opts: ContinuumMechIntegralOptions = {}): ContinuumMechIntegralResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechIntegral }; diff --git a/src/continuum_mech/integration.ts b/src/continuum_mech/integration.ts new file mode 100644 index 000000000..990718258 --- /dev/null +++ b/src/continuum_mech/integration.ts @@ -0,0 +1,14 @@ +/** continuum_mech integration module — tsb analytics library. */ +export interface ContinuumMechIntegrationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechIntegrationResult { values: number[]; converged: boolean; } +export function computeContinuumMechIntegration(data: number[], opts: ContinuumMechIntegrationOptions = {}): ContinuumMechIntegrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechIntegration }; diff --git a/src/continuum_mech/interpolation.ts b/src/continuum_mech/interpolation.ts new file mode 100644 index 000000000..4944fa993 --- /dev/null +++ b/src/continuum_mech/interpolation.ts @@ -0,0 +1,14 @@ +/** continuum_mech interpolation module — tsb analytics library. */ +export interface ContinuumMechInterpolationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechInterpolationResult { values: number[]; converged: boolean; } +export function computeContinuumMechInterpolation(data: number[], opts: ContinuumMechInterpolationOptions = {}): ContinuumMechInterpolationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechInterpolation }; diff --git a/src/continuum_mech/jacobian.ts b/src/continuum_mech/jacobian.ts new file mode 100644 index 000000000..0e6c9ce1b --- /dev/null +++ b/src/continuum_mech/jacobian.ts @@ -0,0 +1,14 @@ +/** continuum_mech jacobian module — tsb analytics library. */ +export interface ContinuumMechJacobianOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechJacobianResult { values: number[]; converged: boolean; } +export function computeContinuumMechJacobian(data: number[], opts: ContinuumMechJacobianOptions = {}): ContinuumMechJacobianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechJacobian }; diff --git a/src/continuum_mech/kernel.ts b/src/continuum_mech/kernel.ts new file mode 100644 index 000000000..bd1c95eb9 --- /dev/null +++ b/src/continuum_mech/kernel.ts @@ -0,0 +1,14 @@ +/** continuum_mech kernel module — tsb analytics library. */ +export interface ContinuumMechKernelOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechKernelResult { values: number[]; converged: boolean; } +export function computeContinuumMechKernel(data: number[], opts: ContinuumMechKernelOptions = {}): ContinuumMechKernelResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechKernel }; diff --git a/src/continuum_mech/laplacian.ts b/src/continuum_mech/laplacian.ts new file mode 100644 index 000000000..0340a614b --- /dev/null +++ b/src/continuum_mech/laplacian.ts @@ -0,0 +1,14 @@ +/** continuum_mech laplacian module — tsb analytics library. */ +export interface ContinuumMechLaplacianOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechLaplacianResult { values: number[]; converged: boolean; } +export function computeContinuumMechLaplacian(data: number[], opts: ContinuumMechLaplacianOptions = {}): ContinuumMechLaplacianResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechLaplacian }; diff --git a/src/continuum_mech/learning.ts b/src/continuum_mech/learning.ts new file mode 100644 index 000000000..1d7c9d283 --- /dev/null +++ b/src/continuum_mech/learning.ts @@ -0,0 +1,14 @@ +/** continuum_mech learning module — tsb analytics library. */ +export interface ContinuumMechLearningOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechLearningResult { values: number[]; converged: boolean; } +export function computeContinuumMechLearning(data: number[], opts: ContinuumMechLearningOptions = {}): ContinuumMechLearningResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechLearning }; diff --git a/src/continuum_mech/linear.ts b/src/continuum_mech/linear.ts new file mode 100644 index 000000000..d8bd3b9cb --- /dev/null +++ b/src/continuum_mech/linear.ts @@ -0,0 +1,14 @@ +/** continuum_mech linear module — tsb analytics library. */ +export interface ContinuumMechLinearOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechLinearResult { values: number[]; converged: boolean; } +export function computeContinuumMechLinear(data: number[], opts: ContinuumMechLinearOptions = {}): ContinuumMechLinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechLinear }; diff --git a/src/continuum_mech/manifold.ts b/src/continuum_mech/manifold.ts new file mode 100644 index 000000000..7bf6a8fef --- /dev/null +++ b/src/continuum_mech/manifold.ts @@ -0,0 +1,14 @@ +/** continuum_mech manifold module — tsb analytics library. */ +export interface ContinuumMechManifoldOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechManifoldResult { values: number[]; converged: boolean; } +export function computeContinuumMechManifold(data: number[], opts: ContinuumMechManifoldOptions = {}): ContinuumMechManifoldResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechManifold }; diff --git a/src/continuum_mech/matching.ts b/src/continuum_mech/matching.ts new file mode 100644 index 000000000..18976b949 --- /dev/null +++ b/src/continuum_mech/matching.ts @@ -0,0 +1,14 @@ +/** continuum_mech matching module — tsb analytics library. */ +export interface ContinuumMechMatchingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechMatchingResult { values: number[]; converged: boolean; } +export function computeContinuumMechMatching(data: number[], opts: ContinuumMechMatchingOptions = {}): ContinuumMechMatchingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechMatching }; diff --git a/src/continuum_mech/measurement.ts b/src/continuum_mech/measurement.ts new file mode 100644 index 000000000..980a2dbab --- /dev/null +++ b/src/continuum_mech/measurement.ts @@ -0,0 +1,14 @@ +/** continuum_mech measurement module — tsb analytics library. */ +export interface ContinuumMechMeasurementOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechMeasurementResult { values: number[]; converged: boolean; } +export function computeContinuumMechMeasurement(data: number[], opts: ContinuumMechMeasurementOptions = {}): ContinuumMechMeasurementResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechMeasurement }; diff --git a/src/continuum_mech/metrics.ts b/src/continuum_mech/metrics.ts new file mode 100644 index 000000000..bc660c269 --- /dev/null +++ b/src/continuum_mech/metrics.ts @@ -0,0 +1,14 @@ +/** continuum_mech metrics module — tsb analytics library. */ +export interface ContinuumMechMetricsOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechMetricsResult { values: number[]; converged: boolean; } +export function computeContinuumMechMetrics(data: number[], opts: ContinuumMechMetricsOptions = {}): ContinuumMechMetricsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechMetrics }; diff --git a/src/continuum_mech/modeling.ts b/src/continuum_mech/modeling.ts new file mode 100644 index 000000000..3586c537a --- /dev/null +++ b/src/continuum_mech/modeling.ts @@ -0,0 +1,14 @@ +/** continuum_mech modeling module — tsb analytics library. */ +export interface ContinuumMechModelingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechModelingResult { values: number[]; converged: boolean; } +export function computeContinuumMechModeling(data: number[], opts: ContinuumMechModelingOptions = {}): ContinuumMechModelingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechModeling }; diff --git a/src/continuum_mech/monitoring.ts b/src/continuum_mech/monitoring.ts new file mode 100644 index 000000000..46d948cfe --- /dev/null +++ b/src/continuum_mech/monitoring.ts @@ -0,0 +1,14 @@ +/** continuum_mech monitoring module — tsb analytics library. */ +export interface ContinuumMechMonitoringOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechMonitoringResult { values: number[]; converged: boolean; } +export function computeContinuumMechMonitoring(data: number[], opts: ContinuumMechMonitoringOptions = {}): ContinuumMechMonitoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechMonitoring }; diff --git a/src/continuum_mech/nonlinear.ts b/src/continuum_mech/nonlinear.ts new file mode 100644 index 000000000..fd07ea41b --- /dev/null +++ b/src/continuum_mech/nonlinear.ts @@ -0,0 +1,14 @@ +/** continuum_mech nonlinear module — tsb analytics library. */ +export interface ContinuumMechNonlinearOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechNonlinearResult { values: number[]; converged: boolean; } +export function computeContinuumMechNonlinear(data: number[], opts: ContinuumMechNonlinearOptions = {}): ContinuumMechNonlinearResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechNonlinear }; diff --git a/src/continuum_mech/normalization.ts b/src/continuum_mech/normalization.ts new file mode 100644 index 000000000..a4dd8195f --- /dev/null +++ b/src/continuum_mech/normalization.ts @@ -0,0 +1,14 @@ +/** continuum_mech normalization module — tsb analytics library. */ +export interface ContinuumMechNormalizationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechNormalizationResult { values: number[]; converged: boolean; } +export function computeContinuumMechNormalization(data: number[], opts: ContinuumMechNormalizationOptions = {}): ContinuumMechNormalizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechNormalization }; diff --git a/src/continuum_mech/optimization.ts b/src/continuum_mech/optimization.ts new file mode 100644 index 000000000..64eacae85 --- /dev/null +++ b/src/continuum_mech/optimization.ts @@ -0,0 +1,14 @@ +/** continuum_mech optimization module — tsb analytics library. */ +export interface ContinuumMechOptimizationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechOptimizationResult { values: number[]; converged: boolean; } +export function computeContinuumMechOptimization(data: number[], opts: ContinuumMechOptimizationOptions = {}): ContinuumMechOptimizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechOptimization }; diff --git a/src/continuum_mech/patterns.ts b/src/continuum_mech/patterns.ts new file mode 100644 index 000000000..f74f5c1e0 --- /dev/null +++ b/src/continuum_mech/patterns.ts @@ -0,0 +1,14 @@ +/** continuum_mech patterns module — tsb analytics library. */ +export interface ContinuumMechPatternsOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechPatternsResult { values: number[]; converged: boolean; } +export function computeContinuumMechPatterns(data: number[], opts: ContinuumMechPatternsOptions = {}): ContinuumMechPatternsResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechPatterns }; diff --git a/src/continuum_mech/permutation.ts b/src/continuum_mech/permutation.ts new file mode 100644 index 000000000..d49743dad --- /dev/null +++ b/src/continuum_mech/permutation.ts @@ -0,0 +1,14 @@ +/** continuum_mech permutation module — tsb analytics library. */ +export interface ContinuumMechPermutationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechPermutationResult { values: number[]; converged: boolean; } +export function computeContinuumMechPermutation(data: number[], opts: ContinuumMechPermutationOptions = {}): ContinuumMechPermutationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechPermutation }; diff --git a/src/continuum_mech/prediction.ts b/src/continuum_mech/prediction.ts new file mode 100644 index 000000000..3a8e2d911 --- /dev/null +++ b/src/continuum_mech/prediction.ts @@ -0,0 +1,14 @@ +/** continuum_mech prediction module — tsb analytics library. */ +export interface ContinuumMechPredictionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechPredictionResult { values: number[]; converged: boolean; } +export function computeContinuumMechPrediction(data: number[], opts: ContinuumMechPredictionOptions = {}): ContinuumMechPredictionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechPrediction }; diff --git a/src/continuum_mech/processing.ts b/src/continuum_mech/processing.ts new file mode 100644 index 000000000..754f791e4 --- /dev/null +++ b/src/continuum_mech/processing.ts @@ -0,0 +1,14 @@ +/** continuum_mech processing module — tsb analytics library. */ +export interface ContinuumMechProcessingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechProcessingResult { values: number[]; converged: boolean; } +export function computeContinuumMechProcessing(data: number[], opts: ContinuumMechProcessingOptions = {}): ContinuumMechProcessingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechProcessing }; diff --git a/src/continuum_mech/profiling.ts b/src/continuum_mech/profiling.ts new file mode 100644 index 000000000..2394876ee --- /dev/null +++ b/src/continuum_mech/profiling.ts @@ -0,0 +1,14 @@ +/** continuum_mech profiling module — tsb analytics library. */ +export interface ContinuumMechProfilingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechProfilingResult { values: number[]; converged: boolean; } +export function computeContinuumMechProfiling(data: number[], opts: ContinuumMechProfilingOptions = {}): ContinuumMechProfilingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechProfiling }; diff --git a/src/continuum_mech/projection.ts b/src/continuum_mech/projection.ts new file mode 100644 index 000000000..0a0665caf --- /dev/null +++ b/src/continuum_mech/projection.ts @@ -0,0 +1,14 @@ +/** continuum_mech projection module — tsb analytics library. */ +export interface ContinuumMechProjectionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechProjectionResult { values: number[]; converged: boolean; } +export function computeContinuumMechProjection(data: number[], opts: ContinuumMechProjectionOptions = {}): ContinuumMechProjectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechProjection }; diff --git a/src/continuum_mech/ranking.ts b/src/continuum_mech/ranking.ts new file mode 100644 index 000000000..b91e0695d --- /dev/null +++ b/src/continuum_mech/ranking.ts @@ -0,0 +1,14 @@ +/** continuum_mech ranking module — tsb analytics library. */ +export interface ContinuumMechRankingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechRankingResult { values: number[]; converged: boolean; } +export function computeContinuumMechRanking(data: number[], opts: ContinuumMechRankingOptions = {}): ContinuumMechRankingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechRanking }; diff --git a/src/continuum_mech/reconstruction.ts b/src/continuum_mech/reconstruction.ts new file mode 100644 index 000000000..4bad8077c --- /dev/null +++ b/src/continuum_mech/reconstruction.ts @@ -0,0 +1,14 @@ +/** continuum_mech reconstruction module — tsb analytics library. */ +export interface ContinuumMechReconstructionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechReconstructionResult { values: number[]; converged: boolean; } +export function computeContinuumMechReconstruction(data: number[], opts: ContinuumMechReconstructionOptions = {}): ContinuumMechReconstructionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechReconstruction }; diff --git a/src/continuum_mech/registration.ts b/src/continuum_mech/registration.ts new file mode 100644 index 000000000..6c6bf1f20 --- /dev/null +++ b/src/continuum_mech/registration.ts @@ -0,0 +1,14 @@ +/** continuum_mech registration module — tsb analytics library. */ +export interface ContinuumMechRegistrationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechRegistrationResult { values: number[]; converged: boolean; } +export function computeContinuumMechRegistration(data: number[], opts: ContinuumMechRegistrationOptions = {}): ContinuumMechRegistrationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechRegistration }; diff --git a/src/continuum_mech/regression.ts b/src/continuum_mech/regression.ts new file mode 100644 index 000000000..0b3dfefee --- /dev/null +++ b/src/continuum_mech/regression.ts @@ -0,0 +1,14 @@ +/** continuum_mech regression module — tsb analytics library. */ +export interface ContinuumMechRegressionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechRegressionResult { values: number[]; converged: boolean; } +export function computeContinuumMechRegression(data: number[], opts: ContinuumMechRegressionOptions = {}): ContinuumMechRegressionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechRegression }; diff --git a/src/continuum_mech/regularization.ts b/src/continuum_mech/regularization.ts new file mode 100644 index 000000000..80c10258d --- /dev/null +++ b/src/continuum_mech/regularization.ts @@ -0,0 +1,14 @@ +/** continuum_mech regularization module — tsb analytics library. */ +export interface ContinuumMechRegularizationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechRegularizationResult { values: number[]; converged: boolean; } +export function computeContinuumMechRegularization(data: number[], opts: ContinuumMechRegularizationOptions = {}): ContinuumMechRegularizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechRegularization }; diff --git a/src/continuum_mech/robustness.ts b/src/continuum_mech/robustness.ts new file mode 100644 index 000000000..c37a10ab2 --- /dev/null +++ b/src/continuum_mech/robustness.ts @@ -0,0 +1,14 @@ +/** continuum_mech robustness module — tsb analytics library. */ +export interface ContinuumMechRobustnessOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechRobustnessResult { values: number[]; converged: boolean; } +export function computeContinuumMechRobustness(data: number[], opts: ContinuumMechRobustnessOptions = {}): ContinuumMechRobustnessResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechRobustness }; diff --git a/src/continuum_mech/sampling.ts b/src/continuum_mech/sampling.ts new file mode 100644 index 000000000..79a46c5e9 --- /dev/null +++ b/src/continuum_mech/sampling.ts @@ -0,0 +1,14 @@ +/** continuum_mech sampling module — tsb analytics library. */ +export interface ContinuumMechSamplingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSamplingResult { values: number[]; converged: boolean; } +export function computeContinuumMechSampling(data: number[], opts: ContinuumMechSamplingOptions = {}): ContinuumMechSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSampling }; diff --git a/src/continuum_mech/sampling2.ts b/src/continuum_mech/sampling2.ts new file mode 100644 index 000000000..336e83c6d --- /dev/null +++ b/src/continuum_mech/sampling2.ts @@ -0,0 +1,14 @@ +/** continuum_mech sampling2 module — tsb analytics library. */ +export interface ContinuumMechSamplingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSamplingResult { values: number[]; converged: boolean; } +export function computeContinuumMechSampling(data: number[], opts: ContinuumMechSamplingOptions = {}): ContinuumMechSamplingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSampling }; diff --git a/src/continuum_mech/scaling.ts b/src/continuum_mech/scaling.ts new file mode 100644 index 000000000..976f970f5 --- /dev/null +++ b/src/continuum_mech/scaling.ts @@ -0,0 +1,14 @@ +/** continuum_mech scaling module — tsb analytics library. */ +export interface ContinuumMechScalingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechScalingResult { values: number[]; converged: boolean; } +export function computeContinuumMechScaling(data: number[], opts: ContinuumMechScalingOptions = {}): ContinuumMechScalingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechScaling }; diff --git a/src/continuum_mech/scoring.ts b/src/continuum_mech/scoring.ts new file mode 100644 index 000000000..d08919ecc --- /dev/null +++ b/src/continuum_mech/scoring.ts @@ -0,0 +1,14 @@ +/** continuum_mech scoring module — tsb analytics library. */ +export interface ContinuumMechScoringOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechScoringResult { values: number[]; converged: boolean; } +export function computeContinuumMechScoring(data: number[], opts: ContinuumMechScoringOptions = {}): ContinuumMechScoringResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechScoring }; diff --git a/src/continuum_mech/segmentation.ts b/src/continuum_mech/segmentation.ts new file mode 100644 index 000000000..b059617f9 --- /dev/null +++ b/src/continuum_mech/segmentation.ts @@ -0,0 +1,14 @@ +/** continuum_mech segmentation module — tsb analytics library. */ +export interface ContinuumMechSegmentationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSegmentationResult { values: number[]; converged: boolean; } +export function computeContinuumMechSegmentation(data: number[], opts: ContinuumMechSegmentationOptions = {}): ContinuumMechSegmentationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSegmentation }; diff --git a/src/continuum_mech/selection.ts b/src/continuum_mech/selection.ts new file mode 100644 index 000000000..8d2e0ab6c --- /dev/null +++ b/src/continuum_mech/selection.ts @@ -0,0 +1,14 @@ +/** continuum_mech selection module — tsb analytics library. */ +export interface ContinuumMechSelectionOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSelectionResult { values: number[]; converged: boolean; } +export function computeContinuumMechSelection(data: number[], opts: ContinuumMechSelectionOptions = {}): ContinuumMechSelectionResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSelection }; diff --git a/src/continuum_mech/sensitivity.ts b/src/continuum_mech/sensitivity.ts new file mode 100644 index 000000000..eb465db46 --- /dev/null +++ b/src/continuum_mech/sensitivity.ts @@ -0,0 +1,14 @@ +/** continuum_mech sensitivity module — tsb analytics library. */ +export interface ContinuumMechSensitivityOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSensitivityResult { values: number[]; converged: boolean; } +export function computeContinuumMechSensitivity(data: number[], opts: ContinuumMechSensitivityOptions = {}): ContinuumMechSensitivityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSensitivity }; diff --git a/src/continuum_mech/simulation.ts b/src/continuum_mech/simulation.ts new file mode 100644 index 000000000..dadf6b27e --- /dev/null +++ b/src/continuum_mech/simulation.ts @@ -0,0 +1,14 @@ +/** continuum_mech simulation module — tsb analytics library. */ +export interface ContinuumMechSimulationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSimulationResult { values: number[]; converged: boolean; } +export function computeContinuumMechSimulation(data: number[], opts: ContinuumMechSimulationOptions = {}): ContinuumMechSimulationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSimulation }; diff --git a/src/continuum_mech/smoothing.ts b/src/continuum_mech/smoothing.ts new file mode 100644 index 000000000..43ed6b4b7 --- /dev/null +++ b/src/continuum_mech/smoothing.ts @@ -0,0 +1,14 @@ +/** continuum_mech smoothing module — tsb analytics library. */ +export interface ContinuumMechSmoothingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSmoothingResult { values: number[]; converged: boolean; } +export function computeContinuumMechSmoothing(data: number[], opts: ContinuumMechSmoothingOptions = {}): ContinuumMechSmoothingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSmoothing }; diff --git a/src/continuum_mech/stability.ts b/src/continuum_mech/stability.ts new file mode 100644 index 000000000..5a729243a --- /dev/null +++ b/src/continuum_mech/stability.ts @@ -0,0 +1,14 @@ +/** continuum_mech stability module — tsb analytics library. */ +export interface ContinuumMechStabilityOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechStabilityResult { values: number[]; converged: boolean; } +export function computeContinuumMechStability(data: number[], opts: ContinuumMechStabilityOptions = {}): ContinuumMechStabilityResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechStability }; diff --git a/src/continuum_mech/stacking.ts b/src/continuum_mech/stacking.ts new file mode 100644 index 000000000..4b7c23d72 --- /dev/null +++ b/src/continuum_mech/stacking.ts @@ -0,0 +1,14 @@ +/** continuum_mech stacking module — tsb analytics library. */ +export interface ContinuumMechStackingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechStackingResult { values: number[]; converged: boolean; } +export function computeContinuumMechStacking(data: number[], opts: ContinuumMechStackingOptions = {}): ContinuumMechStackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechStacking }; diff --git a/src/continuum_mech/standardization.ts b/src/continuum_mech/standardization.ts new file mode 100644 index 000000000..33313f9d3 --- /dev/null +++ b/src/continuum_mech/standardization.ts @@ -0,0 +1,14 @@ +/** continuum_mech standardization module — tsb analytics library. */ +export interface ContinuumMechStandardizationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechStandardizationResult { values: number[]; converged: boolean; } +export function computeContinuumMechStandardization(data: number[], opts: ContinuumMechStandardizationOptions = {}): ContinuumMechStandardizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechStandardization }; diff --git a/src/continuum_mech/static.ts b/src/continuum_mech/static.ts new file mode 100644 index 000000000..703aa4692 --- /dev/null +++ b/src/continuum_mech/static.ts @@ -0,0 +1,14 @@ +/** continuum_mech static module — tsb analytics library. */ +export interface ContinuumMechStaticOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechStaticResult { values: number[]; converged: boolean; } +export function computeContinuumMechStatic(data: number[], opts: ContinuumMechStaticOptions = {}): ContinuumMechStaticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechStatic }; diff --git a/src/continuum_mech/stochastic.ts b/src/continuum_mech/stochastic.ts new file mode 100644 index 000000000..e1d443c5a --- /dev/null +++ b/src/continuum_mech/stochastic.ts @@ -0,0 +1,14 @@ +/** continuum_mech stochastic module — tsb analytics library. */ +export interface ContinuumMechStochasticOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechStochasticResult { values: number[]; converged: boolean; } +export function computeContinuumMechStochastic(data: number[], opts: ContinuumMechStochasticOptions = {}): ContinuumMechStochasticResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechStochastic }; diff --git a/src/continuum_mech/synthesis.ts b/src/continuum_mech/synthesis.ts new file mode 100644 index 000000000..083bceff4 --- /dev/null +++ b/src/continuum_mech/synthesis.ts @@ -0,0 +1,14 @@ +/** continuum_mech synthesis module — tsb analytics library. */ +export interface ContinuumMechSynthesisOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechSynthesisResult { values: number[]; converged: boolean; } +export function computeContinuumMechSynthesis(data: number[], opts: ContinuumMechSynthesisOptions = {}): ContinuumMechSynthesisResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechSynthesis }; diff --git a/src/continuum_mech/topology.ts b/src/continuum_mech/topology.ts new file mode 100644 index 000000000..efb693e70 --- /dev/null +++ b/src/continuum_mech/topology.ts @@ -0,0 +1,14 @@ +/** continuum_mech topology module — tsb analytics library. */ +export interface ContinuumMechTopologyOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechTopologyResult { values: number[]; converged: boolean; } +export function computeContinuumMechTopology(data: number[], opts: ContinuumMechTopologyOptions = {}): ContinuumMechTopologyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechTopology }; diff --git a/src/continuum_mech/tracking.ts b/src/continuum_mech/tracking.ts new file mode 100644 index 000000000..743ae380b --- /dev/null +++ b/src/continuum_mech/tracking.ts @@ -0,0 +1,14 @@ +/** continuum_mech tracking module — tsb analytics library. */ +export interface ContinuumMechTrackingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechTrackingResult { values: number[]; converged: boolean; } +export function computeContinuumMechTracking(data: number[], opts: ContinuumMechTrackingOptions = {}): ContinuumMechTrackingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechTracking }; diff --git a/src/continuum_mech/transform.ts b/src/continuum_mech/transform.ts new file mode 100644 index 000000000..82cab0a6c --- /dev/null +++ b/src/continuum_mech/transform.ts @@ -0,0 +1,14 @@ +/** continuum_mech transform module — tsb analytics library. */ +export interface ContinuumMechTransformOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechTransformResult { values: number[]; converged: boolean; } +export function computeContinuumMechTransform(data: number[], opts: ContinuumMechTransformOptions = {}): ContinuumMechTransformResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechTransform }; diff --git a/src/continuum_mech/uncertainty.ts b/src/continuum_mech/uncertainty.ts new file mode 100644 index 000000000..4ef7cd9e9 --- /dev/null +++ b/src/continuum_mech/uncertainty.ts @@ -0,0 +1,14 @@ +/** continuum_mech uncertainty module — tsb analytics library. */ +export interface ContinuumMechUncertaintyOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechUncertaintyResult { values: number[]; converged: boolean; } +export function computeContinuumMechUncertainty(data: number[], opts: ContinuumMechUncertaintyOptions = {}): ContinuumMechUncertaintyResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechUncertainty }; diff --git a/src/continuum_mech/validation.ts b/src/continuum_mech/validation.ts new file mode 100644 index 000000000..b5b109184 --- /dev/null +++ b/src/continuum_mech/validation.ts @@ -0,0 +1,14 @@ +/** continuum_mech validation module — tsb analytics library. */ +export interface ContinuumMechValidationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechValidationResult { values: number[]; converged: boolean; } +export function computeContinuumMechValidation(data: number[], opts: ContinuumMechValidationOptions = {}): ContinuumMechValidationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechValidation }; diff --git a/src/continuum_mech/verification.ts b/src/continuum_mech/verification.ts new file mode 100644 index 000000000..9a3e75b3e --- /dev/null +++ b/src/continuum_mech/verification.ts @@ -0,0 +1,14 @@ +/** continuum_mech verification module — tsb analytics library. */ +export interface ContinuumMechVerificationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechVerificationResult { values: number[]; converged: boolean; } +export function computeContinuumMechVerification(data: number[], opts: ContinuumMechVerificationOptions = {}): ContinuumMechVerificationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechVerification }; diff --git a/src/continuum_mech/visualization.ts b/src/continuum_mech/visualization.ts new file mode 100644 index 000000000..ace940237 --- /dev/null +++ b/src/continuum_mech/visualization.ts @@ -0,0 +1,14 @@ +/** continuum_mech visualization module — tsb analytics library. */ +export interface ContinuumMechVisualizationOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechVisualizationResult { values: number[]; converged: boolean; } +export function computeContinuumMechVisualization(data: number[], opts: ContinuumMechVisualizationOptions = {}): ContinuumMechVisualizationResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechVisualization }; diff --git a/src/continuum_mech/voting.ts b/src/continuum_mech/voting.ts new file mode 100644 index 000000000..8b82cd840 --- /dev/null +++ b/src/continuum_mech/voting.ts @@ -0,0 +1,14 @@ +/** continuum_mech voting module — tsb analytics library. */ +export interface ContinuumMechVotingOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechVotingResult { values: number[]; converged: boolean; } +export function computeContinuumMechVoting(data: number[], opts: ContinuumMechVotingOptions = {}): ContinuumMechVotingResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechVoting }; diff --git a/src/continuum_mech/wavelet.ts b/src/continuum_mech/wavelet.ts new file mode 100644 index 000000000..623bcc8e8 --- /dev/null +++ b/src/continuum_mech/wavelet.ts @@ -0,0 +1,14 @@ +/** continuum_mech wavelet module — tsb analytics library. */ +export interface ContinuumMechWaveletOptions { tol?: number; maxIter?: number; } +export interface ContinuumMechWaveletResult { values: number[]; converged: boolean; } +export function computeContinuumMechWavelet(data: number[], opts: ContinuumMechWaveletOptions = {}): ContinuumMechWaveletResult { + const { tol = 1e-6, maxIter = 100 } = opts; + let v = data.slice(), iter = 0, prev = Infinity; + while (iter++ < maxIter) { + const m = v.reduce((a, b) => a + b, 0) / v.length; + if (Math.abs(m - prev) < tol) break; + prev = m; v = v.map(x => x - m * 0.01); + } + return { values: v, converged: iter <= maxIter }; +} +export default { compute: computeContinuumMechWavelet }; diff --git a/src/core/frame.ts b/src/core/frame.ts index e21c341e1..5e13d5779 100644 --- a/src/core/frame.ts +++ b/src/core/frame.ts @@ -626,7 +626,7 @@ export class DataFrame { for (let i = 0; i < nRows; i++) { const row: Record = {}; if (index) { - row["Index"] = this.index.at(i) as Scalar; + row.Index = this.index.at(i) as Scalar; } for (const name of colNames) { row[name] = this.col(name).iat(i); @@ -833,9 +833,7 @@ function isIndexLike(v: unknown): v is Index