OECT-Infra
CN: README_CN.md
A comprehensive data processing infrastructure for OECT (Organic Electrochemical Transistor) experiments
Overview
OECT-Infra is an end-to-end platform that transforms raw experimental data into high-performance structured formats, providing standardized feature engineering, visualization, and reporting capabilities for OECT research.
Key Features
- 🔄 Data Conversion: Parallel batch conversion from CSV/JSON to standardized HDF5 format
- 📊 Lazy-Loading API: Efficient access to experimental metadata and measurement data with intelligent caching
- 🔧 Feature Engineering:
- V1: Extract transfer characteristics (gm, Von, |I|, etc.) in columnar HDF5 format
- V2: Advanced DAG-based extraction with YAML configs, Parquet storage, and HuggingFace-style API
- 📁 Unified Data Catalog: SQLite-based indexing with bidirectional file↔database sync
- 📈 Visualization: High-performance plotting with animation/video export
- 📄 Automated Reporting: Configurable PowerPoint generation for stability analysis
- 📉 Degradation Analysis: 17+ power law models with multi-metric comparison framework
Installation
pip install oect-infra
Requirements
- Python 3.11 or higher
- Core dependencies: h5py, pandas, numpy, matplotlib, pydantic, scipy, scikit-learn, PyYAML
Quick Start
Using the Unified Interface
from infra.catalog import UnifiedExperimentManager
# Initialize manager
manager = UnifiedExperimentManager('catalog_config.yaml')
# Get an experiment
exp = manager.get_experiment(chip_id="#20250804008", device_id="3")
# Access data
transfer_data = exp.get_transfer_data()
features = exp.get_features(['gm_max_forward', 'Von_forward'])
# Visualization
fig = exp.plot_transfer_evolution()
Using the Command-Line Interface
# Initialize catalog system
catalog init --auto-config
# Scan and index HDF5 files
catalog scan --path data/raw --recursive
# Synchronize data
catalog sync --direction both
# Query experiments
catalog query --chip "#20250804008" --output table
# Extract Features V2
catalog v2 extract-batch --feature-config v2_ml_ready --workers 4
Features V2 Extraction
# Single experiment with V2
exp = manager.get_experiment(chip_id="#20250804008", device_id="3")
result_df = exp.extract_features_v2('v2_transfer_basic', output_format='dataframe')
# Batch extraction
experiments = manager.search(chip_id="#20250804008")
result = manager.batch_extract_features_v2(
experiments=experiments,
feature_config='v2_ml_ready',
save_format='parquet',
n_workers=4
)
Architecture
Layered Design
Core Foundation (L0)
csv2hdf: Data conversionexperiment: Data accessoect_transfer: Transfer characteristics analysisfeatures: Feature storage
Business Application (L1)
features_version: Feature workflows V1features_v2: Feature engineering V2 systemvisualization: Plotting tools
Application Integration (L2)
catalog: Unified managementstability_report: Report generation
Data Flow Pipeline
CSV/JSON → csv2hdf → Raw HDF5 → experiment (lazy-loading)
→ [V1] oect_transfer & features_version → Feature HDF5
→ [V2] features_v2 (DAG compute graph) → Feature Parquet
→ catalog (indexing + workflow metadata) → visualization/stability_report
Configuration
OECT-Infra uses YAML configuration files. Create a catalog_config.yaml:
roots:
raw_data: "data/raw"
features_v1: "data/features"
features_v2: "data/features_v2"
database:
path: "catalog.db"
sync:
conflict_strategy: "keep_newer"
Documentation
- Complete Documentation
- Package documentation included in the installed package
- See
infra/subdirectory for detailed module documentation
Examples
Check out example notebooks in the source repository:
- Example notebooks and scripts included in package
- Comprehensive API documentation in module docstrings
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Citation
If you use OECT-Infra in your research, please cite:
@software{oect_infra,
author = {lidonghao},
title = {OECT-Infra: Data Processing Infrastructure for OECT Experiments},
year = {2025},
url = {https://github.com/Durian-leader/oect-infra-package}
}
Support
For issues and questions:
- GitHub Issues: https://github.com/Durian-leader/oect-infra-package/issues
- Email: lidonghao100@outlook.com
Acknowledgments
This project was developed for OECT (Organic Electrochemical Transistor) research, providing tools for efficient data management, analysis, and visualization in materials science and electrochemistry research.
Metadata
Release files for oect-infra 3.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oect_infra-3.3.1.tar.gz | 325.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oect_infra-3.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 722.8 kB
Release files / oect_infra-3.3.1.tar.gz
| Download URL | oect_infra-3.3.1.tar.gz |
|---|---|
| Size | 325.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f1b5a8a970ba20070753edbe51e6248c581e2cdfd7a4d45fd2c642d77df4a39
|
|
BLAKE2b-256 checksum How to use checksums |
74c17887b62451e4df0e936e283525f1c86363d9879c888e37d974aa79ede1d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / oect_infra-3.3.1-py3-none-any.whl
| Download URL | oect_infra-3.3.1-py3-none-any.whl |
|---|---|
| Size | 397.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a380c0d9fa3e6ad5a99a2983914e3ca5aafc55ffacf3a769d628749b77841f5
|
|
BLAKE2b-256 checksum How to use checksums |
606a3e0238abae61c43f750d5aeca85652f734fab7c59276dfc262233c52e75e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Security for oect-infra 3.3.1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.