Tutorials and Examples
Learn EPyR Tools through hands-on tutorials and practical examples.
Clean End-to-End Scripts
For users who want short, runnable, copy-pasteable scripts:
These five scripts in examples/clean/ cover loading + plotting,
baseline + fitting, FFT windowing, the 2D slicer, and Rabi frequency
analysis. They are the recommended starting point.
Interactive Notebooks
Our Jupyter notebooks provide interactive tutorials for learning EPyR Tools:
Location: examples/notebooks/
To run the notebooks:
cd examples/notebooks
jupyter notebook
Basic Loading Tutorial
File: 01_Basic_Loading.ipynb
Learn the fundamentals of EPR data loading:
Loading BES3T and ESP format files
Understanding 1D vs 2D data structures
Handling complex EPR data
Basic parameter extraction
Simple visualization techniques
Data export for external analysis
Prerequisites: Basic Python knowledge Duration: 20-30 minutes
Baseline Correction Tutorial
Coming Soon: 02_Baseline_Correction.ipynb
Master baseline correction techniques:
Understanding baseline artifacts
Polynomial correction methods
Signal region exclusion
Advanced exponential models
Quality assessment metrics
Best practices for different data types
Prerequisites: Basic Loading Tutorial Duration: 30-45 minutes
FAIR Data Conversion Tutorial
Coming Soon: 03_FAIR_Conversion.ipynb
Convert proprietary data to open formats:
FAIR data principles
CSV export with metadata
JSON parameter documentation
HDF5 for large datasets
Cross-platform compatibility
Integration with other tools
Prerequisites: Basic Loading Tutorial Duration: 25-35 minutes
Example Scripts
Ready-to-use Python scripts for common workflows:
Location: examples/scripts/
Basic Loading Script
File: 01_basic_loading.py
Automated EPR data loading and visualization:
python examples/scripts/01_basic_loading.py
Features:
Finds all EPR files in data directory
Handles both 1D and 2D data automatically
Creates publication-quality plots
Extracts and displays key parameters
Saves plots with descriptive names
Baseline Correction Script
File: 02_baseline_correction.py
Comprehensive baseline correction workflow:
python examples/scripts/02_baseline_correction.py
Features:
Multiple correction algorithms
Visual comparison of methods
Advanced exclusion region handling
Quality metrics calculation
Automated method selection
FAIR Conversion Script
File: 03_fair_conversion.py
Batch conversion to FAIR formats:
python examples/scripts/03_fair_conversion.py
Features:
Processes entire data directories
Creates multiple output formats
Preserves complete metadata
Generates conversion reports
Format comparison analysis
Sample Data
The examples/data/ directory contains sample EPR data files:
BES3T Format Files:
130406SB_CaWO4_Er_CW_5K_20.DSC/.DTA- 1D CW-EPR spectrumRabi2D_GdCaWO4_13dB_3057G.DSC/.DTA- 2D pulsed EPR (Rabi oscillation)Rabi2D_GdCaWO4_6dB_3770G_2.DSC/.DTA- 2D pulsed EPR (different conditions)
ESP Format Files:
2014_03_19_MgO_300K_111_fullrotation33dB.par/.spc- Angular rotation study
Data Characteristics:
1D Data: Single EPR spectra vs magnetic field
2D Data: Parameter-dependent EPR (time, power, angle, etc.)
Complex Data: Pulsed EPR experiments with I/Q detection
Real Data: CW-EPR and integrated signals
Common Workflows
Routine EPR Analysis
Load Data:
import epyr x, y, params, filepath = epyr.eprload('spectrum.dsc')
Check Data Type:
if isinstance(x, list): print(f"2D data: {y.shape}") else: print(f"1D data: {len(y)} points")
Apply Baseline Correction:
from epyr.baseline import baseline_polynomial y_corrected, baseline = baseline_polynomial(y, x_data=x, poly_order=1)
Visualize Results:
import matplotlib.pyplot as plt plt.plot(x, y_corrected) plt.xlabel('Magnetic Field (G)') plt.ylabel('EPR Signal (a.u.)') plt.show()
Export Data:
from epyr.fair import convert_bruker_to_fair convert_bruker_to_fair(filepath, output_dir='./results')
Research Data Management
Batch Processing:
from pathlib import Path from epyr.fair import convert_bruker_to_fair data_dir = Path('raw_data') for epr_file in data_dir.glob('*.dsc'): convert_bruker_to_fair(epr_file, output_dir='fair_data')
Quality Control:
# Check data integrity if x is None or y is None: print(f"Failed to load {filepath}") continue # Validate parameters required_params = ['MWFQ', 'HCF', 'HSW'] missing = [p for p in required_params if p not in params] if missing: print(f"Missing parameters: {missing}")
Metadata Documentation:
# Document experimental conditions metadata = { 'sample': params.get('SAMP', 'Unknown'), 'temperature': params.get('TE', 'Not recorded'), 'frequency': params.get('MWFQ', 'Not specified'), 'power': params.get('MWPW', 'Not specified'), }
Publication Preparation
High-Quality Plots:
plt.figure(figsize=(8, 6), dpi=300) plt.plot(x, y_corrected, 'k-', linewidth=2) plt.xlabel('Magnetic Field (G)', fontsize=14) plt.ylabel('EPR Signal (a.u.)', fontsize=14) plt.tick_params(labelsize=12) plt.tight_layout() plt.savefig('figure1.png', dpi=300, bbox_inches='tight')
Data Archiving:
# Create comprehensive archive archive_dir = Path('publication_data') archive_dir.mkdir(exist_ok=True) # Save processed data np.savetxt(archive_dir / 'processed_spectrum.txt', np.column_stack([x, y_corrected]), header='Field(G) Intensity(a.u.)') # Save metadata import json with open(archive_dir / 'metadata.json', 'w') as f: json.dump(params, f, indent=2)
Reproducible Analysis:
# Document analysis parameters analysis_log = { 'epyr_version': epyr.__version__, 'baseline_method': 'polynomial', 'baseline_order': 1, 'processing_date': datetime.now().isoformat(), 'input_file': str(filepath), }
Troubleshooting
Common Issues and Solutions
“No module named ‘epyr’”
Check installation:
pip list | grep epyrReinstall:
pip install -e . --force-reinstallVerify Python path:
sys.pathshould include project directory
“Failed to load EPR file”
Check file pairs:
.dscneeds.dta,.parneeds.spcVerify file permissions and path
Try with different file to isolate issue
“Baseline correction fails”
Check if data is 1D:
y.ndim == 1Verify field data:
len(x) == len(y)Try lower polynomial order first
“Complex data visualization issues”
Use magnitude:
np.abs(complex_data)Check data shape for 2D:
isinstance(x, list)Try different plotting approaches for 2D data
Getting Help
Documentation: Check API reference and examples
GitHub Issues: Report bugs and ask questions
Community: Join discussions and share experiences
Email: Contact maintainers for specific problems
Next Steps
After completing these tutorials:
Explore Advanced Features: Try custom analysis scripts
Join Community: Contribute examples and improvements
Apply to Research: Use EPyR Tools in your scientific work
Share Results: Publish reproducible EPR data and analyses