How chenzhuo-2026/cuaunc-h2s-sensor works
This repository reproduces H₂S gas-sensor discrimination experiments: raw resistance recordings are processed into 500-point waveforms, then classified and evaluated with CNN and conventional ML models. The principal workflow runs from recording preparation through model training to concentration/generalization results. Separate branches cover mixed-gas inference and CNN-embedding visualization. The README documents these capabilities; sampled source confirms key preprocessing, training, and inference behavior, while wiring for unsampled scripts is shown only where the README supports it.
Main entry points: preprocessed Waveform arrays · results Trained models · train_cnn_cv.py CNN cross-validation · train_cnn_concentration.py CNN concentration training
Components 21
Waveform preparation
- Raw recordings
data/raw_data - Window preprocessing
code/data_process.py - Dataset assembly
code/data_convert.py - Waveform arrays
data/preprocessed - Concentration split
code/split_train_test.py - Split arrays
data
Model training
- Gas dataset
code/dataset.py - 1D CNN
code/model.py - CNN cross-validation
code/train_cnn_cv.py - CNN concentration training
code/train_cnn_concentration.py - ML baselines
code/train_ml_cv.py - KNN baseline
code/train_knn_cv.py - ML concentration training
code/train_ml_concentration.py - Trained models
results
Evaluation
- Unseen H₂S evaluation
code/eval_unseen_h2s.py - KNN split evaluation
code/eval_knn_concentration.py - Metrics and predictions
results
Inference and analysis
- Mixed-gas inference
code/infer_mixed_gas.py - Raw H₂S inference
code/infer_unseen_h2s.py - Embedding visualization
code/visualize_tsne.py
Other components
- Researcher
Connections 41
- Researcher → Window preprocessing: runs processing
- Raw recordings → Window preprocessing: reads recordings
- Window preprocessing → Dataset assembly: writes processed windows
- Dataset assembly → Waveform arrays: writes arrays
- Researcher → Concentration split: runs split
- Waveform arrays → Concentration split: reads waveforms
- Concentration split → Split arrays: writes split arrays
- Researcher → CNN cross-validation: runs training
- Waveform arrays → CNN cross-validation: loads arrays
- CNN cross-validation → Gas dataset: constructs batches
- CNN cross-validation → 1D CNN: trains network
- CNN cross-validation → Trained models: saves checkpoints
- Researcher → ML baselines: runs training
- Waveform arrays → ML baselines: loads arrays
- ML baselines → Trained models: saves models
- Researcher → KNN baseline: runs training
- Waveform arrays → KNN baseline: loads arrays
- KNN baseline → Trained models: saves models
- Researcher → CNN concentration training: runs evaluation
- Split arrays → CNN concentration training: loads split
- CNN concentration training → Gas dataset: constructs batches
- CNN concentration training → 1D CNN: trains network
- CNN concentration training → Metrics and predictions: writes metrics
- Researcher → ML concentration training: runs evaluation
- Split arrays → ML concentration training: loads split
- ML concentration training → Metrics and predictions: writes metrics
- Researcher → Unseen H₂S evaluation: runs evaluation
- Raw recordings → Unseen H₂S evaluation: supplies held-out H₂S
- Trained models → Unseen H₂S evaluation: loads CNN ensemble
- Unseen H₂S evaluation → Raw H₂S inference: calls preprocessing
- Unseen H₂S evaluation → Metrics and predictions: writes predictions
- Researcher → KNN split evaluation: runs evaluation
- Split arrays → KNN split evaluation: loads split
- KNN split evaluation → Metrics and predictions: writes metrics
- Researcher → Mixed-gas inference: runs inference
- Trained models → Mixed-gas inference: loads CNN ensemble
- Mixed-gas inference → Metrics and predictions: writes predictions
- Researcher → Embedding visualization: runs visualization
- Waveform arrays → Embedding visualization: loads waveforms
- Trained models → Embedding visualization: loads CNN checkpoint
- Embedding visualization → Metrics and predictions: writes embeddings