Last Updated May 28, 2026
Chemistry increasingly depends on computational documents that join measurement, calculation, visualization, interpretation, and evidence into a single research record. A notebook is not merely a convenient place to run code. In rigorous chemical practice, it becomes a structured argument about how raw observations become chemical knowledge: how spectra become assignments, how calibration data become concentrations, how kinetic traces become rate constants, how molecular simulations become trajectories, and how uncertainty, provenance, and assumptions remain visible throughout the process.
The central thesis of this article is that reproducibility in chemistry is not achieved by code alone. It requires disciplined relationships among instruments, samples, standards, software environments, data transformations, model assumptions, uncertainty estimates, quality controls, version history, and human interpretation. A notebook becomes scientifically meaningful when it preserves not only what was computed, but why it was computed, from what data, under what conditions, with what assumptions, and with what limits.
Computational notebooks are therefore instruments of reproducible chemical reasoning. They connect laboratory data, statistical analysis, molecular modeling, FAIR data principles, metadata, version control, computational environments, and scholarly communication. Their value is not that they make chemical conclusions automatic. Their value is that they make the path from observation to claim visible enough to inspect, rerun, critique, extend, and correct.
Main Library
Publications
Article Map
Chemistry
Related Topic
Data Systems & Analytics
Related Topic
Artificial Intelligence Systems
Related Topic
Mathematical Modeling

Why Computational Notebooks Matter in Chemistry
Chemical research has always depended on notebooks. Laboratory notebooks record procedures, observations, quantities, temperatures, reagents, instruments, anomalies, corrections, and conclusions. Computational notebooks extend that tradition into the digital domain by combining executable code, formatted explanation, mathematical notation, tables, visualizations, and output artifacts in one document. Their importance is especially clear in contemporary chemistry because chemical evidence is frequently produced through computational pipelines rather than direct visual inspection alone.
A chromatogram, spectrum, titration curve, kinetic trace, molecular trajectory, binding-energy table, calibration plot, microscopy image, or reaction-yield table is not self-interpreting. Each must be processed through choices: baseline correction, smoothing, peak detection, outlier handling, unit conversion, uncertainty propagation, regression, model selection, normalization, filtering, visualization, and interpretation. When those decisions are hidden in disconnected scripts, spreadsheets, instrument interfaces, local folders, or undocumented software settings, chemical conclusions become difficult to verify. When they are documented in a well-structured computational notebook, the chain of reasoning can be inspected, rerun, criticized, extended, and corrected.
For chemistry, the strongest notebooks are not informal scratchpads. They are disciplined computational records that make the following elements explicit:
- the chemical question being investigated;
- the sample, reagent, standard, compound, material, reaction, or molecular system under study;
- the source, structure, units, and limitations of the data;
- the computational environment used to transform the data;
- the mathematical model, statistical method, or algorithm applied;
- the uncertainty associated with the result;
- the quality-control checks used to validate the workflow;
- the limits of inference;
- the connection between figures, tables, conclusions, source data, and output artifacts.
This makes computational notebooks especially valuable for analytical chemistry, physical chemistry, chemical informatics, computational chemistry, environmental monitoring, materials characterization, biochemistry, spectroscopy, chromatography, mass spectrometry, electrochemistry, and chemical education. They help students and researchers see chemistry as a chain of evidence rather than a collection of isolated facts.
Notebooks are also useful because chemistry often contains both human-readable reasoning and machine-executable procedure. A method section may describe calibration, but a notebook can show the actual calibration data, code, fitted model, residuals, diagnostic plots, exported outputs, and interpretation. A paper may state that spectra were processed, but a notebook can preserve how they were processed. A repository may contain scripts, but a notebook can explain why each transformation matters chemically.
For researchers, the central point is not that every notebook is automatically reproducible. Many notebooks are fragile, messy, and dependent on hidden state. The point is that notebooks can become reproducibility infrastructure when they are designed as chemical records: structured, executable, documented, versioned, and tied to evidence.
Reproducibility, Repeatability, and Replicability
Reproducibility is often used casually, but chemistry benefits from sharper distinctions. Repeatability usually refers to agreement under the same or nearly identical conditions: same method, same operator, same apparatus, same laboratory, and short time interval. Reproducibility is broader: agreement under changed conditions, such as different operators, apparatus, laboratories, or time intervals. Replicability, in many scientific discussions, refers to obtaining consistent support for a claim through a new study, new sample, new experiment, or new data-collection effort.
In computational chemistry workflows, these terms map onto different questions:
- Repeatability: Does the same notebook produce the same result when rerun with the same data, same package versions, same computational environment, and same execution order?
- Computational reproducibility: Can another researcher obtain the same result using the documented data, code, environment, and workflow?
- Experimental reproducibility: Can similar results be obtained under changed laboratory, instrument, operator, or time conditions?
- Replicability: Does a new experiment, sample batch, synthesis, measurement campaign, or simulation study support the same chemical claim?
A notebook can support all four, but it cannot guarantee them. A perfectly executable notebook may still encode a flawed calibration, an inappropriate kinetic model, an unrecognized instrumental artifact, a biased dataset, a poor molecular descriptor, or an unjustified structural assignment. Conversely, a chemically sound experiment can become difficult to assess if the data workflow is undocumented. Reproducible chemical research therefore requires both computational discipline and chemical judgment.
Computational repeatability is often the first layer. If a notebook cannot rerun from top to bottom and produce the same outputs from the same inputs, it is weak as a scientific record. But repeatability alone is not enough. A notebook may reproduce the same wrong conclusion if the raw data are mislabeled, units are wrong, standards were prepared incorrectly, baseline correction was inappropriate, or outliers were removed without justification.
Experimental reproducibility extends beyond the notebook. A concentration estimate may be computationally reproducible while the method fails in another laboratory because the sample matrix differs, the instrument response drifts, or the preparation procedure is underspecified. A molecular simulation may be computationally reproducible while the model fails to reproduce experimentally observed behavior. Reproducibility therefore has both digital and chemical dimensions.
For researchers, the practical goal is to identify which layer of reproducibility is being claimed. A notebook can show that an analysis was rerun. It can support a method transfer. It can document a computational environment. It can clarify assumptions. But it should not be treated as proof that the underlying chemical claim has been replicated unless independent chemical evidence supports that conclusion.
The Notebook as a Chemical Research Record
A computational notebook should be organized as a research record rather than a sequence of loosely connected code cells. In chemistry, a strong notebook often follows the same logic as a well-written experimental report:
- Question: What chemical property, mechanism, concentration, structure, material behavior, or relationship is being investigated?
- System: What molecules, materials, samples, standards, reactions, instruments, or simulations are involved?
- Data: What observations were collected, from what instrument or source, and under what conditions?
- Method: What computational transformations were applied?
- Model: What mathematical, statistical, physical, or mechanistic structure connects observations to claims?
- Uncertainty: How variable, biased, uncertain, or model-dependent are the estimates?
- Quality control: What checks support the validity of the result?
- Interpretation: What chemical conclusion is justified, and what remains unresolved?
- Provenance: What files, software versions, parameters, output artifacts, and execution records are required to reproduce the result?
This organization matters because computational notebooks can otherwise become misleading. A notebook that executes successfully may still be scientifically weak if it lacks controls, metadata, units, sample identifiers, uncertainty estimates, or explanations of data exclusions. The goal is not merely to make code run. The goal is to make the reasoning auditable.
Notebook structure should also distinguish exploratory work from final analysis. Exploration is valuable: scientists need to inspect data, test transformations, compare models, and visualize alternatives. But exploratory cells can create confusion if they remain mixed with final claims. A publication-quality notebook should clearly separate raw import, cleaning, quality control, analysis, results, and interpretation.
In chemistry, a notebook also needs unit discipline. A concentration in \(\mathrm{mol/L}\), a pressure in \(\mathrm{kPa}\), a wavelength in \(\mathrm{nm}\), a wavenumber in \(\mathrm{cm}^{-1}\), an energy in \(\mathrm{kJ/mol}\), and a rate constant in \(\mathrm{s}^{-1}\) cannot be safely treated as generic numbers. Column names, metadata, axis labels, equations, and output files should preserve units wherever possible.
Strong notebooks also preserve the difference between data and interpretation. Raw data are observations or instrument exports. Cleaned data are transformed observations. Features are extracted signals. Parameters are model estimates. Conclusions are chemical interpretations. These layers should not be collapsed into one table without provenance. A notebook becomes trustworthy when each layer remains connected but distinguishable.
For researchers, the notebook should answer one audit question: could another competent scientist understand how the final chemical claim emerged from the original evidence? If the answer is no, the notebook is not yet a research record.
From Raw Data to Chemical Claim
Most computational notebooks in chemistry move through a sequence of evidence transformations. A raw signal becomes a processed signal. A processed signal becomes a feature. A feature becomes a measurement. A measurement becomes a parameter. A parameter becomes a chemical claim. Each step requires assumptions, and each assumption should be visible.
Consider a UV-visible calibration workflow. The raw data may be instrument absorbance readings. Cleaning may remove obvious instrument blanks or failed measurements. Modeling may fit absorbance against concentration. Interpretation may estimate an unknown concentration. Reporting may state that the unknown sample contains a compound at a certain concentration with uncertainty. At each stage, choices matter: blank correction, calibration range, path length, replicate handling, regression method, outlier treatment, and units.
Consider a chromatographic workflow. Raw files may contain detector traces. Processing may correct baselines and integrate peaks. Feature extraction may assign retention times and peak areas. Calibration may connect peak area to concentration. Identification may use retention time, standards, spectra, or mass spectrometry. Interpretation may state that a compound is present, absent, below detection, or quantified. Each claim depends on separation quality, co-elution, integration rules, standards, and quality controls.
Consider a molecular simulation workflow. Raw files may include coordinates, topology, force-field parameters, temperature, pressure, timestep, random seeds, and trajectory frames. Processing may remove equilibration, align structures, compute distances, estimate free energies, or summarize conformational ensembles. Interpretation may claim that a ligand is stable, a pathway is plausible, or a material property is predicted. Those claims depend on model choice, sampling, convergence, force-field validity, and comparison to experiment.
Notebooks are useful because they can make these transformations inspectable. They can show the raw input, the transformation code, intermediate outputs, diagnostics, final results, and interpretation in one place. But this only works if the notebook is written to preserve the chain. A notebook that skips directly from imported data to a final figure without intermediate diagnostics is weaker than it appears.
For researchers, every notebook should preserve a visible path from raw evidence to final claim. The stronger the consequence of the claim, the stronger the documentation burden.
Metadata, Provenance, and Computational Environments
A notebook is only as reproducible as the information needed to rerun it. Chemical notebooks should therefore preserve more than code and results. They should include or link to metadata that describes samples, standards, instruments, operators, dates, units, methods, software, raw files, and derived outputs.
Important metadata categories include:
- Sample metadata: sample identifier, preparation method, matrix, storage conditions, batch, location, and time of collection.
- Instrument metadata: instrument identifier, method file, calibration status, detector settings, firmware, acquisition parameters, and maintenance state.
- Chemical metadata: compound names, identifiers, structures, formulas, concentrations, solvents, reagents, purity, hazards, and standards.
- Computational metadata: language versions, package versions, random seeds, operating system, execution date, environment file, and notebook version.
- Provenance metadata: raw file checksums, processing steps, output filenames, figure sources, analyst notes, and revision history.
For computational environments, the minimum reproducibility package should include a source notebook, raw or synthetic data, a README file, an environment specification, and machine-readable output manifests. For Python, this may mean requirements.txt, pyproject.toml, Conda environment files, or container recipes. For R, it may mean renv.lock or a documented package list. For multi-language scientific workflows, Quarto, Jupyter, Makefiles, containers, workflow managers, and version-controlled repositories can help connect notebooks with scripts, data, and reports.
Provenance also includes file identity. A notebook that reads data.csv is not fully reproducible if no one knows where that file came from, whether it was edited, whether it was exported from an instrument, or whether another file with the same name replaced it later. Checksums, manifest files, data dictionaries, and timestamped exports can make data identity more reliable.
Software environments are a frequent source of irreproducibility. A notebook may work on one computer because a specific package version is installed, a local path exists, an environment variable is set, or a plotting backend behaves a certain way. Six months later, the same notebook may fail or produce subtly different results. Recording package versions, seeds, operating system, and execution order helps reduce these risks.
Good provenance does not eliminate interpretation. It makes interpretation inspectable. It allows other researchers to determine not only what result was obtained, but whether the path to that result was chemically and computationally defensible.
Chemical Use Cases for Reproducible Notebooks
Computational notebooks can support many areas of chemistry, but their structure should adapt to the evidence type. A notebook for spectral interpretation should not look exactly like a notebook for molecular dynamics, and a notebook for regulatory quantification should not be treated like a teaching example. The scientific purpose should shape the record.
Analytical Chemistry
In analytical chemistry, notebooks can document calibration curves, detection limits, quantitation limits, quality-control samples, blanks, matrix effects, uncertainty budgets, recovery studies, replicate precision, and instrument drift. They are especially useful when results depend on multiple processing choices, such as peak integration, baseline correction, spectral deconvolution, blank subtraction, or internal-standard correction.
Spectroscopy
In spectroscopy, notebooks can connect raw spectra to peak assignments, normalization steps, smoothing parameters, derivative spectra, reference comparisons, and uncertainty estimates. They can also preserve links between spectral features and molecular structure. A strong spectroscopy notebook distinguishes observed peaks, tentative assignments, library matches, calculated spectra, reference standards, and confirmed structural claims.
Chromatography and Mass Spectrometry
Chromatography and mass spectrometry workflows often involve complex pipelines: retention-time alignment, peak detection, compound identification, internal standards, calibration, ion suppression, fragmentation evidence, isotope patterns, adduct logic, and database search results. A reproducible notebook should distinguish raw signal processing from chemical identification and final interpretation. A feature is not automatically a compound, and a candidate is not automatically a confirmed identification.
Chemical Kinetics
Kinetic notebooks can preserve time-series data, model assumptions, rate-law choices, initial-condition estimates, numerical integration methods, residual diagnostics, and uncertainty in fitted parameters. This is particularly important when multiple mechanistic models fit the same data approximately. A notebook should show why a rate law was selected and what alternatives were considered or rejected.
Thermodynamics and Equilibrium
Thermodynamic notebooks can connect measured quantities to equilibrium constants, activity corrections, phase behavior, van ’t Hoff analysis, calorimetry, and uncertainty propagation. The notebook should state standard states, units, conventions, and assumptions about ideality or nonideality. Without these details, thermodynamic values can be difficult to compare.
Computational Chemistry and Molecular Simulation
Computational chemistry notebooks often summarize calculations performed elsewhere: electronic-structure runs, geometry optimizations, vibrational analyses, molecular dynamics trajectories, free-energy estimates, or descriptor calculations. Reproducibility depends on preserving input files, software versions, basis sets, functionals, force fields, convergence criteria, coordinates, random seeds, thermostat settings, barostat settings, simulation length, and post-processing scripts.
Materials Chemistry
Materials notebooks can connect synthesis conditions, processing history, characterization files, microstructure, property measurements, and performance metrics. They are useful for tracking relationships among composition, phase, morphology, defects, surface chemistry, thermal transitions, mechanical properties, conductivity, permeability, and degradation. Materials notebooks should preserve sample identifiers and processing history because nominal composition alone is rarely sufficient.
Environmental Chemistry
Environmental chemistry notebooks can connect sampling location, time, matrix, extraction method, calibration, detection limits, blank correction, field conditions, geospatial information, and statistical interpretation. They are especially valuable when data are combined from sensors, laboratory instruments, field campaigns, and public datasets. Responsible notebooks should preserve uncertainty and avoid overstating causal claims from observational data.
For researchers, the best notebook structure follows the evidentiary shape of the chemical problem. A notebook is not one genre; it is a flexible research record.
Laboratory Data, Instruments, and File Provenance
Chemical notebooks often depend on files produced by instruments: spectra, chromatograms, images, voltammograms, mass spectra, thermal traces, diffraction patterns, microscopy files, sensor logs, or plate-reader tables. These files may be proprietary, binary, exported as CSV, converted to open formats, or manually copied into spreadsheets. Each route carries provenance risks.
Instrument files should be treated as primary evidence. A processed table may be easier to analyze, but it should remain linked to the raw instrument export or the closest recoverable source file. If a notebook imports a processed CSV, the notebook should identify how that file was generated, which instrument method produced it, whether the export was automated or manual, and what transformations occurred before import.
File provenance should answer practical questions:
- Which sample produced this file?
- Which instrument and method generated it?
- What acquisition settings were used?
- Was the file raw, exported, converted, integrated, or manually edited?
- What software version produced the file?
- What checksum or manifest confirms file identity?
- What output tables and figures were derived from it?
These questions matter because many chemical errors are not coding errors. They are identity errors. A sample may be mislabeled. A file may be overwritten. A blank may be treated as an unknown. A calibration standard may be imported with the wrong concentration. A column may be missing units. A path may point to an old dataset. A notebook that preserves file provenance can catch or at least expose these failures.
For researchers, instrument-to-notebook workflows should be designed as evidence pipelines. The goal is not only to get data into code. The goal is to preserve enough context that the analysis remains chemically meaningful.
Molecular Modeling, Simulation, and Computational Chemistry
Computational notebooks are especially common in molecular modeling and simulation because these fields already depend on code, parameters, input files, and post-processing. However, reproducibility in computational chemistry is not automatic. A plotted energy curve or molecular trajectory may depend on hidden assumptions: basis set, functional, force field, charge model, solvent representation, cutoff, timestep, thermostat, barostat, convergence criteria, initial structure, random seed, and sampling length.
Electronic-structure notebooks should preserve molecular coordinates, charge, multiplicity, method, basis set, dispersion correction, solvation model, convergence criteria, software version, and input files. For vibrational calculations, scaling factors and mode assignments should be stated. For reaction-energy calculations, standard-state corrections, thermal corrections, and reference states should be explicit.
Molecular dynamics notebooks should preserve topology, force field, parameters, initial coordinates, equilibration protocol, production length, timestep, temperature, pressure, constraints, cutoff methods, long-range electrostatics, random seeds, and trajectory-processing steps. Claims about stability, binding, diffusion, conformation, or free energy should be tied to sampling and convergence diagnostics.
Cheminformatics notebooks should preserve molecular identifiers, structure normalization rules, descriptor definitions, dataset sources, train-test splits, random seeds, model versions, applicability-domain checks, and evaluation metrics. A model that predicts a property should not hide whether the compound lies within the domain of the training data.
For researchers, computational chemistry notebooks should not only show final plots. They should preserve enough information that another scientist can evaluate whether the calculation is physically meaningful, chemically relevant, and computationally reproducible.
Quality Control, Validation, and Auditability
Notebook-based chemistry requires quality control just as laboratory chemistry does. A notebook can rerun successfully while producing invalid results if the data are wrong, units are inconsistent, calibrations are outside range, blanks fail, or model assumptions are inappropriate. Quality-control logic should therefore be embedded in the workflow rather than left to visual inspection alone.
Quality-control checks may include:
- schema validation for required columns and units;
- range checks for concentrations, temperatures, pH values, energies, retention times, absorbances, and peak areas;
- blank checks and carryover checks;
- calibration residual diagnostics;
- replicate precision summaries;
- quality-control sample recovery;
- instrument drift checks;
- outlier flags with documented justification;
- model-fit diagnostics;
- version and checksum validation for input files.
Auditability means that a notebook’s outputs can be traced back to inputs and methods. A figure in a report should be linked to the data file, code cell, parameters, and processing steps that generated it. A table of concentrations should link to standards, calibration model, unknown measurements, blank corrections, and uncertainty estimates. A molecular-modeling claim should link to input files and post-processing scripts.
Validation depends on consequence. A teaching notebook can use synthetic data and simple assumptions. A research notebook should preserve enough provenance for peer review and reuse. A regulated laboratory workflow may require formal validation, access control, audit trails, electronic signatures, controlled methods, and documented change management. A notebook used in high-consequence contexts must be embedded in a broader quality system.
For researchers, the practical rule is this: every notebook should include checks that would catch the errors most likely to invalidate its chemical conclusion. A notebook without checks is a narrative, not an evidence system.
Publication, Supplementary Information, and Scholarly Communication
Computational notebooks can improve scholarly communication by connecting narrative, data, code, figures, and results. They can function as supplementary information, teaching materials, laboratory reports, reproducibility packages, or internal audit records. They are especially useful when a paper’s conclusions depend on data transformation, statistical modeling, simulation, or complex visualization.
However, notebooks should not be used as dumping grounds. A published notebook should be readable, organized, and executable. It should include sufficient explanation for an informed reader to understand the purpose of each analysis step. It should remove abandoned cells, ambiguous scratch work, and hidden state. It should declare dependencies and provide instructions for rerunning.
Publication-quality notebooks should also distinguish between the human-readable document and the machine-executable workflow. In some cases, a notebook is ideal. In others, a script, package, workflow file, or pipeline may be more robust. A strong repository often includes notebooks for explanation, scripts for reusable functions, data folders for inputs, output folders for derived artifacts, and environment files for reproducibility.
Scholarly notebooks should also handle sensitive information responsibly. Environmental sampling locations, clinical data, proprietary formulations, hazardous procedures, and confidential laboratory records may require redaction, aggregation, access control, or synthetic examples. Reproducibility must be balanced with ethics, privacy, safety, and legal constraints.
For researchers, the best published notebooks support understanding without pretending to be complete laboratory systems. They expose the reasoning and provide enough structure for evaluation, while clearly stating what data, permissions, or controlled materials are not included.
Failure Modes in Notebook-Based Chemistry
Notebooks can improve reproducibility, but they can also hide problems if used carelessly. Common failure modes include:
- Hidden state: results depend on cells executed out of order or variables left in memory.
- Untracked data edits: data are manually changed in spreadsheets or instrument software before entering the notebook.
- Missing environment details: package versions or software dependencies are not recorded.
- Ambiguous units: concentrations, temperatures, energies, wavelengths, pressures, or times are recorded without units.
- Undocumented exclusions: points are removed without transparent chemical or statistical justification.
- Overfit models: a visually attractive curve is treated as chemical evidence without mechanistic or statistical support.
- Weak metadata: samples, standards, instruments, and acquisition settings are not recoverable.
- Irreproducible randomness: simulations or resampling methods lack documented seeds and stochastic assumptions.
- Path dependency: notebooks work only on one computer because local file paths are hard-coded.
- Output drift: figures, tables, and reports are manually copied after analysis and later diverge from the notebook outputs.
- Silent unit conversion: calculations mix units without explicit conversion or validation.
- Unsupported extrapolation: a calibration, model, or descriptor is applied outside its validated domain.
A strong notebook culture addresses these risks by treating the notebook as one component in a broader reproducibility system. The repository, data archive, environment file, provenance manifest, raw-data folder, output folder, validation checks, and final report are all part of the scientific record.
Failure modes should be anticipated, not discovered only after publication. A notebook should be tested by restarting the runtime and running all cells from top to bottom. Input data should be checked for required columns and units. Random seeds should be set where appropriate. Outputs should be regenerated rather than manually edited. Assumptions should be named where they enter the analysis.
For researchers, notebook discipline is not bureaucracy. It is error prevention. The more complex or consequential the chemical workflow, the more important it becomes to design notebooks that fail visibly rather than silently.
Responsible Use of Computational Notebooks
Chemistry has direct consequences for health, industry, agriculture, energy, environment, materials, water, food systems, and public safety. Reproducible notebooks should therefore be designed with responsibility as well as efficiency in mind.
Responsible notebook practice includes:
- separating educational synthetic data from real experimental, clinical, environmental, forensic, or regulated data;
- protecting sensitive laboratory, clinical, environmental, proprietary, or location-specific records;
- documenting assumptions that affect safety or risk interpretation;
- avoiding unsupported claims from exploratory analyses;
- preserving raw data where legally and ethically possible;
- flagging hazardous-chemistry contexts that require institutional oversight;
- making uncertainty and limitations visible in reports and figures;
- using notebooks to support auditability rather than to create an illusion of certainty.
Responsible use also means resisting the authority of clean computation. A notebook can make a flawed analysis look polished. A model can produce exact-looking numbers from weak data. A figure can conceal uncertainty. A statistical result can be chemically meaningless. A simulation can be visually persuasive while undersampled or poorly parameterized. Computational clarity is not the same as scientific validity.
The ethical value of a reproducible notebook is not that it makes every conclusion final. Its value is that it allows others to understand how the conclusion was reached, what evidence supports it, what assumptions shape it, what uncertainties remain, and where future correction may be needed.
For researchers, responsible notebooks should make conclusions less opaque. They should reveal the work behind the claim, not hide it behind polished outputs.
Mathematical Lens: From Observation to Reproducible Claim
Most notebook-based chemical workflows can be represented as a sequence of transformations from observations to claims. Let \(D\) represent the observed data, \(M\) the model or computational method, \(\theta\) the parameters estimated from the data, and \(C\) the chemical conclusion. A simplified workflow can be written as:
D^{\mathrm{raw}}
\overset{\mathrm{cleaning}}{\longrightarrow}
D^{*}
\overset{M}{\longrightarrow}
\hat{\theta}
\overset{\mathrm{interpretation}}{\longrightarrow}
C
\]
Interpretation: Reproducibility asks whether each arrow in this chain is documented, justified, executable, and connected to the data and conclusion.
If a concentration estimate depends on baseline correction, the baseline correction must be recoverable. If a kinetic constant depends on a chosen reaction order, that assumption must be stated. If a molecular simulation depends on a force field, thermostat, timestep, and initial structure, those parameters must be preserved.
For a simple calibration problem, the Beer–Lambert relationship is often written as:
A = \varepsilon \ell c
\]
Interpretation: \(A\) is absorbance, \(\varepsilon\) is molar absorptivity, \(\ell\) is path length, and \(c\) is concentration. A notebook should preserve the units, path length, standards, blank treatment, and conditions under which this relationship is used.
In practice, a notebook may fit a linear calibration model:
A_i = \beta_0 + \beta_1 c_i + e_i
\]
Interpretation: \(\beta_0\) is the intercept, \(\beta_1\) is the calibration slope, and \(e_i\) is the residual for observation \(i\). The notebook should preserve the standards used, the units, the regression method, residual diagnostics, and the relationship between the fitted model and unknown concentrations.
For replicate measurements \(x_1, x_2, \ldots, x_n\), the sample mean is:
\bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i
\]
Interpretation: The mean summarizes repeated observations, but it should not hide replicate variability, outliers, instrument drift, or sample preparation differences.
The sample standard deviation is:
s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2}
\]
Interpretation: \(s\) summarizes dispersion among replicate measurements. It depends on how replicates were collected and whether they represent technical, instrumental, preparation, or biological variability.
The standard uncertainty of the mean is commonly estimated as:
u(\bar{x}) = \frac{s}{\sqrt{n}}
\]
Interpretation: This expression estimates uncertainty in the mean under simplified assumptions. It does not include all sources of uncertainty unless the replicate design captures them.
For a model with predictions \(\hat{y}_i\), residuals can be written as:
r_i = y_i – \hat{y}_i
\]
Interpretation: Residuals reveal how observations differ from model predictions. A notebook should inspect residuals rather than relying only on a visually appealing fitted curve.
A common coefficient of determination is:
R^2 = 1 – \frac{\sum_i (y_i-\hat{y}_i)^2}{\sum_i (y_i-\bar{y})^2}
\]
Interpretation: \(R^2\) describes the fraction of variance explained by a model under specific assumptions. It should not be treated as proof that the model is chemically valid.
These equations are simple, but they illustrate the deeper point: a notebook should make visible whether a value is a single observation, a replicate mean, a fitted parameter, a derived quantity, a diagnostic, or an interpreted chemical claim. Reproducibility depends on preserving those distinctions.
Computational Workflows for Reproducible Chemical Research
Computational workflows can make notebook-based chemistry more transparent. A workflow can track sample identifiers, instrument exports, data dictionaries, calibration standards, units, quality-control checks, model assumptions, package versions, notebook versions, output artifacts, figure sources, and interpretation status.
Useful workflows include calibration auditing, replicate-summary generation, spectral peak tables, chromatographic peak integration review, mass-spectrometry feature tracking, kinetic model comparison, thermodynamic parameter estimation, simulation provenance, molecular descriptor calculation, uncertainty propagation, and repository output manifests. More advanced workflows may integrate laboratory information management systems, instrument APIs, raw-data archives, workflow engines, containers, continuous integration, and automated report generation.
For researchers, computational workflows should preserve three distinctions:
- Input versus output: what was measured or imported versus what was derived.
- Computation versus interpretation: what the code calculated versus what the chemist concluded.
- Exploration versus evidence: what was tried during analysis versus what supports the final claim.
The examples below use synthetic data. They do not validate a laboratory method, certify a chemical result, establish regulatory compliance, or replace professional chemical review. They demonstrate how notebook reasoning can be structured, audited, and communicated responsibly.
Python Example: Auditing Calibration and Notebook Provenance
The following Python example shows a compact notebook-style workflow for synthetic absorbance data. It creates a calibration dataset, fits a linear model using standard numerical tools, calculates residual diagnostics, estimates an unknown concentration, and builds a minimal provenance record. In a real laboratory workflow, the synthetic table would be replaced by instrument exports, laboratory information management system records, standard preparation metadata, raw-file checksums, and documented software environments.
from pathlib import Path
from typing import Dict, List
import json
import platform
import sys
import numpy as np
import pandas as pd
# Computational notebook audit for a simple chemical calibration workflow.
# Educational synthetic data only; not for laboratory reporting,
# clinical decisions, environmental compliance, or regulatory use.
def fit_linear_calibration(data: pd.DataFrame) -> Dict[str, object]:
"""Fit absorbance = intercept + slope * concentration."""
required_columns: List[str] = [
"standard_id",
"concentration_mol_L",
"absorbance",
"temperature_K",
"instrument_id",
"notebook_version",
]
missing_columns = [column for column in required_columns if column not in data.columns]
if missing_columns:
raise ValueError(f"Missing required columns: {missing_columns}")
x = data["concentration_mol_L"].to_numpy(dtype=float)
y = data["absorbance"].to_numpy(dtype=float)
slope, intercept = np.polyfit(x, y, deg=1)
predicted = intercept + slope * x
residuals = y - predicted
ss_residual = float(np.sum(residuals ** 2))
ss_total = float(np.sum((y - np.mean(y)) ** 2))
r_squared = 1.0 - ss_residual / ss_total
diagnostics = data.copy()
diagnostics["predicted_absorbance"] = predicted
diagnostics["residual"] = residuals
diagnostics["absolute_residual"] = np.abs(residuals)
diagnostics["residual_review_required"] = diagnostics["absolute_residual"] > 0.02
return {
"slope_absorbance_per_mol_L": float(slope),
"intercept_absorbance": float(intercept),
"r_squared": float(r_squared),
"ss_residual": ss_residual,
"ss_total": ss_total,
"diagnostics": diagnostics,
}
calibration_data = pd.DataFrame({
"standard_id": ["blank", "std_01", "std_02", "std_03", "std_04", "std_05"],
"concentration_mol_L": [0.000, 0.002, 0.004, 0.006, 0.008, 0.010],
"absorbance": [0.006, 0.154, 0.301, 0.453, 0.602, 0.748],
"temperature_K": [298.15, 298.16, 298.14, 298.15, 298.17, 298.15],
"instrument_id": ["uvvis_A"] * 6,
"notebook_version": ["1.0.0"] * 6,
})
unknown_absorbance = 0.386
calibration_result = fit_linear_calibration(calibration_data)
slope = calibration_result["slope_absorbance_per_mol_L"]
intercept = calibration_result["intercept_absorbance"]
estimated_concentration = (unknown_absorbance - intercept) / slope
diagnostics = calibration_result["diagnostics"]
output_dir = Path("outputs")
output_dir.mkdir(exist_ok=True)
diagnostics.to_csv(output_dir / "calibration_diagnostics.csv", index=False)
provenance: Dict[str, object] = {
"workflow": "synthetic_uv_vis_calibration",
"model": "linear_calibration_absorbance_equals_intercept_plus_slope_times_concentration",
"slope_absorbance_per_mol_L": slope,
"intercept_absorbance": intercept,
"r_squared": calibration_result["r_squared"],
"unknown_absorbance": unknown_absorbance,
"estimated_unknown_concentration_mol_L": estimated_concentration,
"data_rows": int(len(calibration_data)),
"columns": list(calibration_data.columns),
"python_version": sys.version,
"platform": platform.platform(),
"numpy_version": np.__version__,
"pandas_version": pd.__version__,
"output_files": [
"outputs/calibration_diagnostics.csv",
"outputs/provenance_manifest.json",
],
"responsible_use": [
"Synthetic educational data only.",
"Real workflows should include standard preparation records, instrument export files, uncertainty budgets, raw-file checksums, quality controls, and package/environment lock files.",
],
}
with (output_dir / "provenance_manifest.json").open("w", encoding="utf-8") as file:
json.dump(provenance, file, indent=2)
print("Calibration slope:", round(slope, 4))
print("Calibration intercept:", round(intercept, 4))
print("R-squared:", round(calibration_result["r_squared"], 6))
print("Estimated unknown concentration:", estimated_concentration, "mol/L")
print(diagnostics[[
"standard_id",
"concentration_mol_L",
"absorbance",
"predicted_absorbance",
"residual",
"residual_review_required",
]])
This example is intentionally simple, but it models several reproducibility habits that scale to more complex chemistry: keeping units in column names, separating data creation from model fitting, checking required columns, saving derived outputs, documenting model assumptions, recording package versions, and generating a provenance manifest. A more advanced version would also capture raw-data checksums, analyst identity, calibration-standard certificates, instrument firmware, controlled vocabulary terms, and signed quality-control review.
R Example: Experimental Summaries and Reproducibility Diagnostics
R remains especially useful for statistical summaries, quality-control workflows, experimental design, replicate analysis, uncertainty communication, and publication-quality graphics. The following base R example creates a small synthetic dataset with repeated measurements across instruments, fits a calibration model, summarizes instrument-level behavior, and exports a reproducibility report.
# Reproducibility diagnostics for synthetic chemical measurement data.
# Educational example only; not for validated laboratory reporting.
measurements <- data.frame(
run_id = paste0("run_", sprintf("%02d", 1:12)),
instrument_id = rep(c("uvvis_A", "uvvis_B"), each = 6),
concentration_mol_L = rep(
c(0.000, 0.002, 0.004, 0.006, 0.008, 0.010),
times = 2
),
absorbance = c(
0.006, 0.154, 0.301, 0.453, 0.602, 0.748,
0.008, 0.151, 0.305, 0.449, 0.606, 0.744
),
temperature_K = c(
298.15, 298.16, 298.14, 298.15, 298.17, 298.15,
298.20, 298.19, 298.21, 298.18, 298.22, 298.20
)
)
required_columns <- c(
"run_id",
"instrument_id",
"concentration_mol_L",
"absorbance",
"temperature_K"
)
missing_columns <- setdiff(required_columns, names(measurements))
if (length(missing_columns) > 0) {
stop(paste("Missing required columns:", paste(missing_columns, collapse = ", ")))
}
calibration_model <- lm(absorbance ~ concentration_mol_L, data = measurements)
measurements$predicted_absorbance <- predict(calibration_model)
measurements$residual <- measurements$absorbance - measurements$predicted_absorbance
measurements$residual_review_required <- abs(measurements$residual) > 0.02
instrument_summary <- aggregate(
absorbance ~ instrument_id,
data = measurements,
FUN = function(x) c(mean = mean(x), sd = sd(x), n = length(x))
)
instrument_summary_clean <- data.frame(
instrument_id = instrument_summary$instrument_id,
mean_absorbance = instrument_summary$absorbance[, "mean"],
sd_absorbance = instrument_summary$absorbance[, "sd"],
replicate_count = instrument_summary$absorbance[, "n"]
)
temperature_summary <- aggregate(
temperature_K ~ instrument_id,
data = measurements,
FUN = function(x) c(mean = mean(x), sd = sd(x))
)
temperature_summary_clean <- data.frame(
instrument_id = temperature_summary$instrument_id,
mean_temperature_K = temperature_summary$temperature_K[, "mean"],
sd_temperature_K = temperature_summary$temperature_K[, "sd"]
)
dir.create("outputs", showWarnings = FALSE)
write.csv(
measurements,
file = "outputs/synthetic_measurements.csv",
row.names = FALSE
)
write.csv(
instrument_summary_clean,
file = "outputs/instrument_summary.csv",
row.names = FALSE
)
write.csv(
temperature_summary_clean,
file = "outputs/temperature_summary.csv",
row.names = FALSE
)
sink("outputs/reproducibility_report.txt")
cat("Synthetic Chemical Notebook Reproducibility Report\n")
cat("================================================\n\n")
cat("Calibration model:\n")
print(summary(calibration_model))
cat("\nInstrument summary:\n")
print(instrument_summary_clean)
cat("\nTemperature summary:\n")
print(temperature_summary_clean)
cat("\nRuns requiring residual review:\n")
print(measurements[measurements$residual_review_required, ])
cat("\nNotes:\n")
cat("- Synthetic educational data only.\n")
cat("- Real workflows should preserve raw files, standards metadata, analyst notes, instrument methods, and software versions.\n")
sink()
print(instrument_summary_clean)
print(temperature_summary_clean)
In practice, R notebooks and Quarto documents can be used to produce laboratory reports, supplementary information, quality-control summaries, teaching materials, and statistical appendices. The decisive issue is not whether a workflow uses Python, R, Julia, or another language. The decisive issue is whether the computational document preserves the relationship among chemical question, data, method, result, uncertainty, and interpretation.
SQL Example: Computational Notebook Evidence Register
Notebook-based chemical research becomes more reliable when notebooks, datasets, instruments, environments, outputs, quality-control checks, and interpretation claims are traceable. A simple evidence register can preserve the context needed to audit computational chemistry workflows.
CREATE TABLE chemical_notebook (
notebook_id TEXT PRIMARY KEY,
notebook_title TEXT NOT NULL,
notebook_version TEXT,
research_question TEXT,
notebook_type TEXT,
author_or_analyst TEXT,
created_datetime TEXT,
last_executed_datetime TEXT,
repository_uri TEXT,
notebook_status TEXT
);
CREATE TABLE notebook_dataset (
dataset_id TEXT PRIMARY KEY,
notebook_id TEXT NOT NULL,
dataset_name TEXT NOT NULL,
dataset_role TEXT,
source_description TEXT,
raw_file_uri TEXT,
processed_file_uri TEXT,
file_checksum TEXT,
data_dictionary_uri TEXT,
unit_notes TEXT,
FOREIGN KEY (notebook_id) REFERENCES chemical_notebook(notebook_id)
);
CREATE TABLE notebook_sample_context (
sample_context_id INTEGER PRIMARY KEY,
dataset_id TEXT NOT NULL,
sample_id TEXT,
sample_matrix TEXT,
preparation_method TEXT,
instrument_id TEXT,
instrument_method TEXT,
acquisition_datetime TEXT,
calibration_status TEXT,
quality_notes TEXT,
FOREIGN KEY (dataset_id) REFERENCES notebook_dataset(dataset_id)
);
CREATE TABLE computational_environment (
environment_id TEXT PRIMARY KEY,
notebook_id TEXT NOT NULL,
language_name TEXT,
language_version TEXT,
package_manifest_uri TEXT,
environment_lock_uri TEXT,
operating_system TEXT,
container_image_uri TEXT,
random_seed TEXT,
environment_notes TEXT,
FOREIGN KEY (notebook_id) REFERENCES chemical_notebook(notebook_id)
);
CREATE TABLE notebook_analysis_step (
step_id INTEGER PRIMARY KEY,
notebook_id TEXT NOT NULL,
step_order INTEGER CHECK (step_order >= 0),
step_name TEXT,
step_type TEXT,
input_dataset_id TEXT,
output_artifact_id TEXT,
method_or_model TEXT,
assumptions TEXT,
review_required INTEGER CHECK (review_required IN (0, 1)),
FOREIGN KEY (notebook_id) REFERENCES chemical_notebook(notebook_id),
FOREIGN KEY (input_dataset_id) REFERENCES notebook_dataset(dataset_id)
);
CREATE TABLE notebook_output_artifact (
artifact_id TEXT PRIMARY KEY,
notebook_id TEXT NOT NULL,
artifact_type TEXT,
artifact_uri TEXT,
artifact_checksum TEXT,
generated_datetime TEXT,
source_step_id INTEGER,
figure_or_table_caption TEXT,
FOREIGN KEY (notebook_id) REFERENCES chemical_notebook(notebook_id),
FOREIGN KEY (source_step_id) REFERENCES notebook_analysis_step(step_id)
);
CREATE TABLE notebook_quality_control (
qc_id INTEGER PRIMARY KEY,
notebook_id TEXT NOT NULL,
qc_type TEXT,
qc_status TEXT,
expected_condition TEXT,
observed_condition TEXT,
review_notes TEXT,
FOREIGN KEY (notebook_id) REFERENCES chemical_notebook(notebook_id)
);
CREATE TABLE notebook_interpretation_claim (
claim_id INTEGER PRIMARY KEY,
notebook_id TEXT NOT NULL,
claim_text TEXT,
claim_type TEXT,
supporting_artifact_id TEXT,
uncertainty_notes TEXT,
limitation_notes TEXT,
review_status TEXT,
FOREIGN KEY (notebook_id) REFERENCES chemical_notebook(notebook_id),
FOREIGN KEY (supporting_artifact_id) REFERENCES notebook_output_artifact(artifact_id)
);
SELECT
n.notebook_id,
n.notebook_title,
n.notebook_version,
d.dataset_name,
d.file_checksum,
e.language_name,
e.language_version,
e.environment_lock_uri,
q.qc_status,
c.claim_type,
c.review_status,
CASE
WHEN d.file_checksum IS NULL
THEN 'dataset provenance review required'
WHEN e.environment_lock_uri IS NULL
THEN 'computational environment review required'
WHEN q.qc_status IS NOT NULL AND q.qc_status != 'pass'
THEN 'quality control review required'
WHEN c.review_status IN ('draft', 'unreviewed')
THEN 'interpretation review required'
ELSE 'standard review'
END AS notebook_review_status
FROM chemical_notebook n
LEFT JOIN notebook_dataset d
ON n.notebook_id = d.notebook_id
LEFT JOIN computational_environment e
ON n.notebook_id = e.notebook_id
LEFT JOIN notebook_quality_control q
ON n.notebook_id = q.notebook_id
LEFT JOIN notebook_interpretation_claim c
ON n.notebook_id = c.notebook_id
ORDER BY notebook_review_status, n.notebook_id;
The purpose of this register is to keep computational chemical interpretation attached to evidence. A notebook should preserve sample identity, dataset source, file checksums, computational environment, analysis steps, output artifacts, quality controls, and interpretation claims. Notebook-based chemistry becomes stronger when provenance is part of the record.
GitHub Repository
The companion repository for this article can support reproducible workflows for calibration auditing, notebook provenance, environment documentation, replicate summaries, output manifests, SQL evidence registers, and responsible computational chemical interpretation.
Complete Code Repository
The full code distribution for this article, including selected computational notebook examples, expanded reproducibility workflows, provenance manifests, calibration diagnostics, environment records, SQL evidence registers, and scientific-computing scaffolding, is available on GitHub.
Limits, Uncertainty, and Responsible Interpretation
Computational notebooks can make chemical reasoning more transparent, but they cannot make weak evidence strong by themselves. A notebook may be executable, well formatted, and visually persuasive while still relying on poor sample metadata, invalid calibration, inappropriate model choice, insufficient sampling, undocumented exclusions, or flawed chemical assumptions.
Notebook reproducibility is also fragile. Hidden state, out-of-order execution, local file paths, missing data, changing package versions, unrecorded random seeds, and manual edits can all break reproducibility. Even when a notebook reruns, outputs may change if dependencies or external datasets have changed. Environment capture and provenance records reduce these risks but do not eliminate them.
Chemical uncertainty must remain visible. A fitted concentration should preserve calibration uncertainty and replicate variation. A kinetic parameter should preserve model assumptions and residual diagnostics. A molecular simulation should preserve sampling limitations. A spectral assignment should preserve confidence level and alternative explanations. A notebook should not turn uncertain chemical evidence into a falsely certain report.
Responsible interpretation also requires matching the notebook to its context. A teaching notebook can use synthetic data and simplified models. A research notebook should preserve data and methods well enough for peer evaluation. A regulated workflow may require formal validation, audit trails, controlled access, electronic records, and documented change control. A public repository may require redaction or synthetic data when real data are sensitive.
The computational examples associated with this article are synthetic and educational. They do not validate laboratory methods, certify chemical results, establish regulatory compliance, approve clinical or environmental conclusions, or replace professional chemical review. They are designed to show how notebook-based chemical reasoning can be structured and audited.
Responsible interpretation should avoid both computational overconfidence and procedural pessimism. Notebooks cannot solve reproducibility alone, but they can make chemical reasoning more inspectable, reusable, and accountable when embedded in a broader evidence system.
Conclusion
Computational notebooks show how chemistry can preserve the path from observation to interpretation. They connect samples, instruments, data, code, equations, models, figures, outputs, provenance, and narrative in one research record. When designed well, they make chemical reasoning more visible and reproducible.
The field’s central lesson is that reproducibility is not produced by code alone. It is produced by the disciplined connection among raw data, metadata, software environments, transformations, assumptions, uncertainty, quality controls, and interpretation. A notebook is scientifically strong only when it preserves that connection.
For chemistry as a discipline, notebooks are important because modern chemical evidence increasingly depends on computation. Spectra are processed. Chromatograms are integrated. Mass-spectrometry features are aligned. Kinetic traces are modeled. Molecular systems are simulated. Environmental datasets are merged. Materials properties are screened. Without reproducible computational records, much of this evidence becomes difficult to inspect or trust.
A mature notebook practice does not ask only, “Does the code run?” It asks: What data were used? What units and assumptions were applied? What environment produced the result? What uncertainty remains? What quality checks passed? What chemical claim is justified? The reliability of notebook-based chemistry depends on answering those questions with discipline.
Related articles
- What Is Chemistry?
- Measurement, Quantification, and the Experimental Basis of Chemistry
- Chemical Metrology, Standards, and Reference Materials
- Mathematics for Chemistry and Molecular Systems
- Spectroscopy and the Measurement of Molecular Structure
- Chromatography, Separation Science, and Chemical Identification
- Mass Spectrometry and Molecular Detection
- Electroanalytical Chemistry and Chemical Sensors
- Laboratory Automation, Chemical Data, and Instrument Workflows
- Computational Chemistry and Molecular Modeling
- Data Systems & Analytics
- Artificial Intelligence Systems
Further reading
- Project Jupyter (n.d.) Project Jupyter Documentation. Available at: https://docs.jupyter.org/
- Quarto (n.d.) Scientific and Technical Publishing System. Available at: https://quarto.org/
- R Project (n.d.) The R Project for Statistical Computing. Available at: https://www.r-project.org/
- National Institute of Standards and Technology (n.d.) Chemistry WebBook. Available at: https://webbook.nist.gov/chemistry/
- International Union of Pure and Applied Chemistry (n.d.) Compendium of Chemical Terminology: The Gold Book. Available at: https://goldbook.iupac.org/
- National Academies of Sciences, Engineering, and Medicine (2019) Reproducibility and Replicability in Science. Washington, DC: National Academies Press. Available at: https://nap.nationalacademies.org/catalog/25303/reproducibility-and-replicability-in-science
- Wilkinson, M.D., Dumontier, M., Aalbersberg, I.J. et al. (2016) ‘The FAIR Guiding Principles for scientific data management and stewardship’, Scientific Data, 3, 160018. Available at: https://www.nature.com/articles/sdata201618
- Kluyver, T. et al. (2016) ‘Jupyter Notebooks — a publishing format for reproducible computational workflows’, in Positioning and Power in Academic Publishing: Players, Agents and Agendas. Available at: https://eprints.soton.ac.uk/403913/
References
- International Union of Pure and Applied Chemistry (n.d.) Reproducibility. Available at: https://goldbook.iupac.org/terms/view/R05305
- International Union of Pure and Applied Chemistry (n.d.) Repeatability. Available at: https://goldbook.iupac.org/terms/view/R05293
- Kluyver, T., Ragan-Kelley, B., Pérez, F., Granger, B., Bussonnier, M., Frederic, J., Kelley, K., Hamrick, J., Grout, J., Corlay, S., Ivanov, P., Avila, D., Abdalla, S. and Willing, C. (2016) ‘Jupyter Notebooks — a publishing format for reproducible computational workflows’, in Positioning and Power in Academic Publishing: Players, Agents and Agendas. Available at: https://eprints.soton.ac.uk/403913/
- Linstrom, P.J. and Mallard, W.G. (eds.) NIST Chemistry WebBook, NIST Standard Reference Database Number 69. National Institute of Standards and Technology. Available at: https://webbook.nist.gov/chemistry/
- National Academies of Sciences, Engineering, and Medicine (2019) Reproducibility and Replicability in Science. Washington, DC: The National Academies Press. Available at: https://nap.nationalacademies.org/catalog/25303/reproducibility-and-replicability-in-science
- Project Jupyter (n.d.) Project Jupyter Documentation. Available at: https://docs.jupyter.org/
- Quarto (n.d.) Quarto: Scientific and Technical Publishing. Available at: https://quarto.org/
- Sweedler, J.V. (2019) ‘Reproducibility and Replicability’, Analytical Chemistry, 91(13), pp. 7931–7932. Available at: https://pubs.acs.org/doi/10.1021/acs.analchem.9b02719
- Wilkinson, M.D., Dumontier, M., Aalbersberg, I.J. et al. (2016) ‘The FAIR Guiding Principles for scientific data management and stewardship’, Scientific Data, 3, 160018. Available at: https://www.nature.com/articles/sdata201618
