science pack¶
50 nodes, in noodlelab[science] and above.
Output¶
Save CSV¶
science.save_csv
Write a table into this run’s output folder.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Science/Plot¶
Bar Chart¶
science.bar_chart
One bar per row: a value per category, with optional error bars (e.g. mean ± standard error from Group Summary).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Error bar column Default |
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Negative bars in another colour Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Box Plot¶
science.box_plot
Distribution per group: the box spans the quartiles, the line is the median, whiskers reach 1.5 IQR; individual values are drawn on top.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
One box per group Default |
|
|
Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Residual Plot¶
science.residual_plot
Residuals of a fit against x, with the zero line and a ±2σ band: patterns (curvature, funnels) mean the model misses something.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Scatter Plot¶
science.scatter_plot
Two columns of a table against each other, optionally coloured by a third (numbers get a colour bar, categories a legend) and with a least-squares line.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Colour points by this column Default |
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Time Series Plot¶
science.time_series_plot
One or more columns against time; the first is drawn boldest.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Comma-separated columns to draw Default |
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Bars above zero red, below blue (for anomalies) Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Science/Signal¶
Butterworth Filter¶
science.butterworth_filter
A Butterworth filter applied forwards and backwards (zero phase shift, scipy.signal.sosfiltfilt): keep frequencies below, above, between or outside the cutoffs.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Samples per second (Hz) Default |
|
|
Default |
|
|
Hz; the lower edge for band filters Default |
|
|
Hz; band filters only Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Detrend¶
science.detrend
Remove a straight-line trend (or only the mean, constant), such as
sensor drift, before computing spectra.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Envelope¶
science.envelope
The amplitude envelope (magnitude of the analytic signal, via the Hilbert transform). The spectrum of the envelope of a band-passed signal reveals how often impacts repeat: the classic bearing-fault diagnosis.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Fft¶
science.fft
One-sided amplitude spectrum of a real signal. Fourier Transform (in Math/Fourier) does more: units, phase, windows, padding and the inverse.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Find Peaks¶
science.find_peaks
Local maxima of y (scipy.signal.find_peaks), as a table with position, height, prominence and width at half prominence (in x units), sorted by prominence, largest first.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
How far a peak stands out Default |
|
|
Samples between peaks Default |
|
|
Keep the most prominent N; 0: all Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
Savitzky-Golay Filter¶
science.savgol_filter
Smooth a signal while preserving peak shape (scipy.signal.savgol_filter).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Signal Statistics¶
science.signal_statistics
Root mean square, peak absolute value, peak-to-peak range, crest factor (peak / RMS: about 1.41 for a pure sine) and kurtosis (3 for Gaussian noise). Impacts, such as from a damaged bearing, raise the last two.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Welch PSD¶
science.welch_psd
Power spectral density by Welch’s method: the average spectrum of
overlapping windowed segments, much less noisy than a single FFT.
density gives units²/Hz, spectrum units² (for reading tone amplitudes).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Samples per second (Hz) Default |
|
|
Samples per segment Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Science/Statistics¶
Bootstrap CI¶
science.bootstrap_ci
A confidence interval for a statistic by resampling (percentile-BCa, scipy.stats.bootstrap), with no assumption about the distribution.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
Compare Groups¶
science.compare_groups
Do the groups differ? One-way ANOVA (or the rank-based Kruskal-Wallis test) across all groups, then every pair: Welch’s t-test (or Mann-Whitney U), with Holm’s correction for the number of comparisons.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
The measured variable Default |
|
|
The column naming each row’s group Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Correlation Matrix¶
science.correlation_matrix
Pairwise correlation coefficients between numeric columns. The first
column, variable, names the rows (Heatmap uses it as labels).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Comma-separated; empty: every numeric column Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Detect Outliers¶
science.detect_outliers
Flag unusual values in a column. iqr: outside [Q1 − t·IQR, Q3 + t·IQR]
(t = 1.5 is Tukey’s rule); z-score: more than t standard deviations
from the mean; mad: robust z-score from the median absolute deviation.
Outputs the table with an outlier column, the table without them, and
how many there were.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
Trend Test¶
science.trend_test
Is there a monotonic trend? The Mann-Kendall test (non-parametric, robust
to outliers) with Sen’s slope, the median of all pairwise slopes, as is
usual for climate and hydrology series. Dates are converted to decimal
years, so with per = 10 the slope is per decade. The rows need not be
in time order, and several values may share a time. table: the input
with Sen’s line added as <value>_trend, for plotting.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Dates, or numbers such as years Default |
|
|
Default |
|
|
Express the slope per this many time units (years for dates) Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Two-Way ANOVA¶
science.two_way_anova
Analysis of variance with two factors, such as treatment and block in a randomised block trial: does each factor explain variation once the other is accounted for? Type II sums of squares (valid for unbalanced data); partial η² as the effect size.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
The measured variable Default |
|
|
e.g. the treatment Default |
|
|
e.g. the block or site Default |
|
|
Also test A × B (needs replicates) Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
Science/Studies¶
Files Design¶
science.files_design
One row per file matching the pattern, so a Sweep zone processes each
file in turn (column file, and name without folder or suffix).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
Default |
|
|
Which files, e.g. .csv or run_/*.tif Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Grid Design¶
science.grid_design
Every combination of evenly spaced values: levels per range (a
normal parameter spans mean ± 2 sd), and each listed value.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
One per line: name = low .. high [unit], normal(mean, sd) or [a, b, c] Default |
|
|
Values per range Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Latin Hypercube¶
science.latin_hypercube
A space-filling random design: each parameter’s range is cut into
samples slices and each slice is used once (scipy.stats.qmc).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
One per line: name = low .. high [unit], normal(mean, sd) or [a, b, c] Default |
|
|
Default |
|
|
The same seed gives the same design Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Morris Design¶
science.morris_design
Morris elementary-effects screening (SALib): cheap, it tells which parameters matter at all. Runs (parameters + 1) × trajectories times. Analyse the sweep’s results with Sensitivity Analysis.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
One per line: name = low .. high [unit], normal(mean, sd) or [a, b, c] Default |
|
|
Default |
|
|
Default |
|
|
The same seed gives the same design Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Random Design¶
science.random_design
Parameter sets drawn at random: uniformly within ranges, from normal distributions, or among listed values.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
One per line: name = low .. high [unit], normal(mean, sd) or [a, b, c] Default |
|
|
Default |
|
|
The same seed gives the same design Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Sensitivity Analysis¶
science.sensitivity_analysis
How much each parameter influences a result, from a Sweep zone over a Morris Design (μ*: mean absolute effect, σ: non-linearity and interactions) or a Sobol Design (S1: variance share alone, ST: with interactions, with 95 % confidence half-widths).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
The result column to explain Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Sobol Design¶
science.sobol_design
Sobol variance-based sensitivity (SALib, Saltelli’s sampling): how much of the output’s variance each parameter causes, alone (S1) and with its interactions (ST). Analyse the sweep’s results with Sensitivity Analysis.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
One per line: name = low .. high [unit], normal(mean, sd) or [a, b, c] Default |
|
|
A power of 2; runs = base × (parameters + 2) Default |
|
|
The same seed gives the same design Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Science/Tables¶
Add Column¶
science.add_column
Compute a new column from others (pandas DataFrame.eval). Supports
/ ** , comparisons, pi and sqrt, exp, log, log10, sin, cos, tan and abs; put names with spaces in
back quotes. Attribute access, indexing and other Python are refused. When columns have units, the arithmetic is done with them: the new column gets its unit, and adding metres to seconds is an error.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Arithmetic on columns: length_cm / 100, or (a + b) / 2 Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Column As Text¶
science.column_as_text
The values of a column joined into one text, e.g. the names of the top three samples for a report sentence.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
0: all Default |
|
|
A format spec: .2f for numbers, %Y for dates; empty: as is Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Describe¶
science.describe
Descriptive statistics per column.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Describe Columns¶
science.describe_columns
Say what each column holds. The descriptions travel with the table and show in the inspector.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
column = what it holds, one per line Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Drop Missing¶
science.drop_missing
Remove rows with missing values (NaN or empty).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Only look at these columns; empty: all Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Filter Rows¶
science.filter_rows
Keep the rows matching a condition (pandas DataFrame.query). The
index is renumbered. The condition may use column names, constants, lists
of constants (region in ["North", "South"]), arithmetic, comparisons,
and/or/not and sqrt, exp, log, log10, sin, cos, tan and abs;
attribute access, indexing and other Python are refused.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
A pandas query: magnitude >= 2.5 and region == “North”. Put names with spaces in |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Get Column¶
science.get_column
One column of a table as an array. Its type follows the column: numbers (NDArray[float64], or int64, which links anywhere floats do), text (NDArray[str_]), dates (NDArray[datetime64]) or true/false (NDArray[bool_]).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Get Quantity Column¶
science.get_quantity_column
One numeric column as an array with its unit (see Set Column Units), so what follows converts and checks units.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
The column’s unit, if the table does not give one Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Group Summary¶
science.group_summary
Summary statistics of one column for each group: one row per group,
in the order the groups first appear. ci95 is the half-width of the
95 % confidence interval of the mean (Student’s t).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
The column that defines the groups Default |
|
|
The numeric column to summarise Default |
|
|
Comma-separated: count, mean, std, sem, ci95, min, median, max, sum Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Join Tables¶
science.join_tables
Combine two tables on a shared key column (a database join). Columns with the same name in both get the suffixes _left and _right.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
A column both tables have Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Load CSV¶
science.load_csv
Read a CSV file into a table: from the workspace (relative paths) or from remote storage (e.g. lab-s3://2026/run1.csv). Headers such as “length [m]” give the column a unit, which it keeps through the table nodes.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Read “length [m]” or “length (m)” as a column “length” in metres Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Lookup Value¶
science.lookup_value
One cell: the value in value_column of the first row whose
key_column equals key (compared as text), e.g. the mean yield of
treatment “N120” from a Group Summary. Without a key column, the first
row’s value, e.g. after Sort Rows.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Empty: the first row Default |
|
|
The row whose key column holds this Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Make Table¶
science.make_table
Combine two arrays of the same length (numbers, text or dates) into a two-column table.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Parse Dates¶
science.parse_dates
Turn a text column into dates and times, for the time series nodes.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
strftime format, e.g. %d.%m.%Y; empty: detect ISO dates Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Pivot Table¶
science.pivot_table
Cross-tabulate: one row per value of rows, one column per value of
columns, cells aggregated from values.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Rename Columns¶
science.rename_columns
Give columns readable names, e.g. before adding a table to a report.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
old=new pairs, comma-separated: temp_c=Temperature (°C) Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Select Columns¶
science.select_columns
Keep only some columns, in the given order.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Comma-separated, in the order wanted Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Set Column Units¶
science.set_column_units
Give columns their units. They stay with the table through filtering, sorting, grouping and joining, show in previews and report tables as “length (cm)”, and make the table’s column pins quantities.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
column = unit, one per line or comma-separated: length_cm = cm Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Sort Rows¶
science.sort_rows
Sort by a column; with a limit, the top N rows (e.g. the largest events).
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Keep the first N rows; 0: all Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Table Info¶
science.table_info
The number of rows and columns, e.g. for “n = 120” in a report.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Science/Time Series¶
Climatology¶
science.climatology
The typical value for each month (or season, or day of the year) over a baseline period, and each row’s anomaly: its departure from that normal.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Default |
|
|
First year of the baseline; 0: all Default |
|
|
Last year of the baseline; 0: all Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Resample¶
science.resample
Aggregate to regular periods: daily to monthly means, hourly to daily
sums. Each period is labelled by its start. Adds a count column with
the number of values in each period.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Default |
|
|
Default |
|
|
Comma-separated; empty: every numeric column Default |
|
|
Periods with fewer values become empty (NaN) Default |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|
Rolling Window¶
science.rolling_window
Add a moving-window statistic of a column, e.g. a 7-day mean or a 5-year running average. Windows at the ends use the values they have.
Inputs
Name |
Type |
Description |
|---|---|---|
|
|
|
|
|
Default |
|
|
Rows per window Default |
|
|
Default |
|
|
Default |
|
|
The new column; empty: |
Outputs
Name |
Type |
Description |
|---|---|---|
|
|