ReactorCheck
Turn reactor compositions or measured species flows into auditable catalytic metrics and QC.
ReactorCheck reads CSV/XLSX reactor data, reconstructs outlet molar flows from an explicitly confirmed internal standard or accepts direct measured flows, and runs both paths through one unit-aware scientific core. Results include reaction metrics, material closure, steady-state candidates, structured QC, calculation settings, and source provenance.
| Input | Explicit method | Verified output |
|---|---|---|
| CO/H2/CH3OH/N2 dry mole % | F_out,i = y_i/y_N2 × F_N2,feed |
CO conversion 0.500 |
| N2 feed = 1 mol/h | N2 declared nonreactive by the user | CH3OH C-selectivity 1.000 |
| Feed CO/H2 = 1/2 mol/h | normalized dry composition | C/H/O balance 100% |
| Raw mapped sum | tolerance-based QC, never silently hidden | settings + provenance workbook |
Install
Python 3.10 or newer is required. Tk is needed only for the desktop GUI.
python -m pip install reactorcheck
For the bundled example datasets, unreleased development code, or contributions, clone the public source and use an editable install instead:
30-second bundled example (source install)
git clone https://github.com/hdkim99/ReactorCheck.git
cd ReactorCheck
python -m pip install -e .
reactorcheck analyze examples/synthetic_composition.csv \
--config examples/synthetic_composition_config.json \
--output reactorcheck-composition.xlsx \
--plot reactorcheck-composition.png
reactorcheck-gui
The synthetic CO hydrogenation example is available as both
CSV and
XLSX. Its hand calculation reconstructs
CO/H2/CH3OH/N2 outlet flows of 0.5/1.0/0.5/1.0 mol/h.
The backward-compatible direct-flow example remains available:
reactorcheck analyze examples/synthetic_reactor.csv \
--config examples/synthetic_config.json \
--output reactorcheck-direct.xlsx
Supported scope in 0.2.x
| Capability | Status | Notes |
|---|---|---|
| CSV and XLSX input | Supported | One table/first sheet per analysis |
| Editable column/species mapping | Supported | JSON, CLI suggestions, and GUI |
| Direct molar/standard-volume flows | Supported | Explicit ideal-gas standard T/P |
| Mole fraction + internal standard | Supported | fraction, %/mol%, ppm/ppmv |
| Raw vs normalized treatment | Supported | Raw and used fractions are both retained |
| Wet/dry water basis | Supported | Independent from normalization; H2O rules are explicit |
| Conversion, molar/carbon selectivity, yield | Supported | One reference reactant basis |
| Element/measured-mass recovery | Supported | Derived from explicit formulas |
| Rate, mass STY, GHSV, WHSV | Supported | Definitions and units are explicit |
| Multi-variable steady state + override | Supported | Candidate detection, not physical proof |
| QC, plot, Excel/CSV export | Supported | Settings and provenance included |
| Multi-reactant conversion/selectivity basis | Planned | No implicit combined denominator in 0.2.x |
Scientific safeguards
ReactorCheck never chooses an internal standard or infers that it is inert. A
composition configuration must name the standard, provide its feed flow, set an
actual JSON boolean confirmation, and record a written assumption. Missing,
zero, negative, or non-finite standard fractions stop reconstruction. Wet/dry
water basis and raw/normalized treatment are independent settings; the ambiguous
single composition.basis key is rejected rather than guessed.
Raw composition sums are always retained and checked against a configured
tolerance. Normalization does not change the internal-standard ratio, a property
covered by scientific regression tests. See
docs/scientific-definitions.md and the complete
composition configuration.
Selected public real-data validation
ReactorCheck's IO and mapping paths have also been exercised against selected
public fixed-bed reactor exports: a Zenodo online-GC workbook/processed-flow
pair and a Mendeley Data dry-composition table. This does not imply validation
for every instrument or published metric definition. Dataset DOI, license,
checksums, files/columns used, failures found, scientific boundaries, and the
opt-in reproduction command are recorded in
docs/public-data-sources.md.
Outputs
Excel export contains summary, processed, qc, settings, and provenance
sheets. Composition analyses preserve raw/used mole fractions, sums, source
columns/units, inlet sources, reference reactant, water basis, normalization,
internal-standard feed, reconstruction equation, and the user's assumption text.
Limitations
- Version 0.2.x uses one configured reference reactant; multi-reactant aggregate bases and stoichiometric selectivity coefficients are planned, not inferred.
- Internal-standard reconstruction assumes
F_std,out = F_std,inexactly as the user declares; ReactorCheck cannot prove nonreactivity from composition data. - Dry-basis data cannot reconstruct water flow. H2O must not be mapped as an outlet composition on a dry basis.
- Element and measured-mass closure cover mapped species only.
- Standard-volume conversion uses the ideal-gas equation at explicit T/P.
- The steady-state detector identifies statistical candidates only.
Related tools
These are independent repositories; interoperability is planned through public tabular/JSON schemas rather than shared private code.
- Ordifile — instrument-data standardization
- ReactorCheck — this reactor-analysis tool
- TPxLab — temperature-programmed analysis
- OperandoMerge — heterogeneous timeline alignment
Development
python -m pip install -e ".[dev]"
ruff format --check .
ruff check .
mypy src
pytest
python -m build
twine check dist/*
Synthetic example data are MIT-licensed with the project. See
CONTRIBUTING.md
and CITATION.cff.
The 1280×640
social-preview.png
is the current repository social-preview candidate and is generated from the same
synthetic composition example shown above.
Metadata
Release files for reactorcheck 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reactorcheck-0.2.2.tar.gz | 184.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reactorcheck-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 219.6 kB
Release files / reactorcheck-0.2.2.tar.gz
| Download URL | reactorcheck-0.2.2.tar.gz |
|---|---|
| Size | 184.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ff9713a6fa3a94b9a086cfbbb3a167bc147fab336e1042d3dc874447f007ba3
|
|
BLAKE2b-256 checksum How to use checksums |
2b305c95c6b4e0b7e8e957363ebcff2364a9c70ccf57905e6bb6edc855274868
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 23, 2026.
Transparency logRelease files / reactorcheck-0.2.2-py3-none-any.whl
| Download URL | reactorcheck-0.2.2-py3-none-any.whl |
|---|---|
| Size | 35.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
766fb65fb2dad14d44289fffc553f1c8dc37c8c2c528181a50840f9e1b1e0026
|
|
BLAKE2b-256 checksum How to use checksums |
abf18388575756b952604b191670b0a5b7e40244338c62cc22cd7026bf640acd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 23, 2026.
Transparency log