PFAS Reach Bracketing Tool

Machine-readable reach experiment analysis with multiple imputation. Runs entirely in your browser.

Version 1.1.1 browser + Python bundle · Archived version DOI: 10.5281/zenodo.20464907 · Concept DOI (latest): 10.5281/zenodo.18937739 · GitHub repository

Developed by Dr. Gehendra Kharel, STREAM Lab (Sustainable Tools for Risk Evaluation and Climate-Water Modeling), Texas Christian University.

ΣPFAS40 = summed concentration of 40 target PFAS analytes Default MI = 5,000 replicates ftrib is concentration-space only No data uploaded

1. Inputs

One row per site × campaign × analyte. Required columns: site_id, campaign, analyte_std, result_value, detect_flag, rl.
Recognized columns include Site ID/site_id, Lat, Lon, Reach_group, Bracket_role, USGS_streamflow_gage.
Recommended schema: experiment_id, reach_group, experiment_type, downstream_site, upstream_sites, tributary_sites, baseline_sites, all_sites. Multiple sites are pipe-delimited.
Upload PFAS CSV or run the demo data. All computation is local to your browser.
Use statement. This is a screening and prioritization tool. It does not provide regulatory compliance determinations or source apportionment. The f_trib diagnostic is not a flow or PFAS load fraction.

2. What the tool computes

ΣPFAS40 is computed in each imputation replicate as the sum of the 40 target PFAS analytes. Non-detects are left-censored at their reporting limits (RLs).
  • Censoring-aware totals. Analytes with ≥2 detections use a fitted lognormal distribution truncated at [0, RL]; analytes with <2 detections use Uniform(0, RL).
  • RL/2 sensitivity. MI site totals are compared against one-half reporting-limit substitution and detect-only sums.
  • Machine-readable reach bracketing. Reach objects are read from the reach table rather than hard-coded into the script.
  • ftrib diagnostic. f_trib = (C_dn - C_up)/(C_trib - C_up) is reported only when the downstream concentration lies within the upstream–tributary end-member range.
  • Reproducibility outputs. Download CSV outputs and a validation report for manuscript or SI archiving.
Python edition available

Download the companion script for Spyder/Anaconda, Jupyter, or Google Colab workflows. It implements the same manuscript-aligned MI and reach-bracketing logic as the browser tool.

Download Python script

The browser and Python editions are bundled together for public release; both run locally and do not transmit user data.

Live tool: GitHub Pages. Source code: GitHub repository. Archival DOI: 10.5281/zenodo.20464907.

Methodological basis and references

This tool operationalizes established methods for censored environmental data, multiple imputation, reproducible computational workflows, EPA Method 1633A PFAS analysis, rank-based sensitivity checks, and synoptic PFAS loading/source-screening concepts. These references are included to acknowledge the methodological basis of the workflow and to direct users to the underlying literature.

  1. Helsel, D. R. Statistics for Censored Environmental Data Using Minitab and R, 2nd ed.; Wiley: Hoboken, NJ, 2012.
  2. Rubin, D. B. Multiple Imputation for Nonresponse in Surveys; Wiley: New York, 1987.
  3. Lubin, J. H.; Colt, J. S.; Camann, D.; Davis, S.; Cerhan, J. R.; Severson, R. K.; Bernstein, L.; Hartge, P. Epidemiologic Evaluation of Measurement Data in the Presence of Detection Limits. Environmental Health Perspectives 2004, 112 (17), 1691–1696. https://doi.org/10.1289/ehp.7199.
  4. Helsel, D. R. Fabricating Data: How Substituting Values for Nondetects Can Ruin Results. Chemosphere 2006, 65 (11), 2434–2439. https://doi.org/10.1016/j.chemosphere.2006.04.051.
  5. Antweiler, R. C.; Taylor, H. E. Evaluation of Statistical Treatments of Left-Censored Environmental Data Using Coincident Uncensored Data Sets: I. Summary Statistics. Environmental Science & Technology 2008, 42 (10), 3732–3738. https://doi.org/10.1021/es071301c.
  6. Wilkinson, M. D.; Dumontier, M.; Aalbersberg, I. J.; Appleton, G.; Axton, M.; Baak, A.; et al. The FAIR Guiding Principles for Scientific Data Management and Stewardship. Scientific Data 2016, 3, 160018. https://doi.org/10.1038/sdata.2016.18.
  7. Goble, C. A.; Soiland-Reyes, S.; Bacall, F.; Garijo, D.; Gil, Y.; Ferreira da Silva, R.; et al. Applying the FAIR Principles to Computational Workflows. Scientific Data 2025, 12, 337. https://doi.org/10.1038/s41597-025-04451-9.
  8. U.S. EPA. Method 1633: Analysis of Per- and Polyfluoroalkyl Substances (PFAS) in Aqueous, Solid, Biosolids, and Tissue Samples by LC-MS/MS, Revision A; EPA Office of Water: Washington, DC, December 2024.
  9. Spearman, C. The Proof and Measurement of Association between Two Things. American Journal of Psychology 1904, 15 (1), 72–101. https://doi.org/10.2307/1412159.
  10. Woodward, E. E.; Senior, L. A.; Fleck, J. A.; Barber, L. B.; Hansen, A. M.; Duris, J. W. Using a Time-of-Travel Sampling Approach to Quantify Per- and Polyfluoroalkyl Substances (PFAS) Stream Loading and Source Inputs in a Mixed-Source, Urban Catchment. ACS ES&T Water 2024, 4 (10), 4356–4367. https://doi.org/10.1021/acsestwater.4c00288.
  11. Asare, P. T.; Kharel, G.; Nice, M. S.; Lavy, B. L.; Birmingham, M.; Harvey, O. R. Handling Left-Censored PFAS Data in Surface-Water Reconnaissance: A Reproducible Workflow Applied to Ten Sites in the Trinity River Headwaters, Texas. PLOS Water 2026, e0000554. https://doi.org/10.1371/journal.pwat.0000554.

3. Results

Results will appear here after running the analysis or manuscript demo data.
How to read this table: Each row is a machine-readable reach object. delta_SigmaPFAS40_95II is the downstream-minus-upstream contrast, and f_trib_or_mix_median is reported only for applicable concentration-space tributary or mixing diagnostics. Values are blank when the diagnostic is not applicable.

MI vs RL/2 sensitivity

Site totals