Parse the CSV exports from gas-chromatograph software for VFA (volatile fatty acid) analysis used in anaerobic digestion lab work. Tolerant of common header alias quirks (HAc, c2:0, iso-Butyric, etc.), comma vs semicolon delimiters, and European decimal commas.
Returns one row per sample with parsed VFA concentrations plus derived totalVfa and acetateEquivalent (a common stability indicator).
npm install vfa-csv-parserconst { parse } = require('vfa-csv-parser');
const fs = require('node:fs');
const text = fs.readFileSync('lab-export.csv', 'utf8');
const { rows, totals } = parse(text);
for (const r of rows) {
console.log(r.sample, r.totalVfa, 'mg/L total VFA, AcEq', r.acetateEquivalent);
}
console.log('mean acetic:', totals.mean.acetic);Header aliases recognized:
| Canonical | Aliases |
|---|---|
| acetic | Acetic, HAc, c2, c2:0, Acetate |
| propionic | Propionic, HPr, c3, c3:0 |
| butyric | Butyric, n-Butyric, c4, c4:0 |
| iso_butyric | iso-Butyric, i-C4 |
| valeric | Valeric, n-Valeric, c5:0 |
| iso_valeric | iso-Valeric, i-C5 |
| caproic | Caproic, Hexanoic, c6:0 |
Blank cells, ND, and <LOD parse as null (not zero).
The library returns acetateEquivalent per row, computed with these factors:
acetic × 1.00
propionic × 0.81
butyric × 0.68
iso_butyric× 0.68
valeric × 0.59
iso_valeric× 0.59
caproic × 0.52
These approximate molar-mass-based conversions. Acetate-equivalent total above ~3000 mg/L is generally a sign of digester stress; check your local ratio (most operators use propionic/acetic > 1.4 as a stability flag).
npm test15 tests, no deps.
MIT.