Western Blot Quantifier
Automatically identify Western Blot gel bands, perform densitometric analysis, and calculate normalized values relative to loading controls.
Features
- Automatic Band Detection: Detect protein band positions in gel images
- Densitometric Analysis: Calculate grayscale/optical density values for each band
- Normalization: Normalize relative to loading control proteins (e.g., GAPDH, β-actin, Tubulin)
- Data Export: Output quantitative results in CSV format
Usage
Basic Usage
# Call in Python
from skills.western_blot_quantifier.scripts.main import WesternBlotQuantifier
# Create analyzer
analyzer = WesternBlotQuantifier()
# Analyze single image
result = analyzer.analyze(
image_path="path/to/wb_image.png",
reference_bands=["GAPDH"], # Loading control band names
target_bands=["p53", "Bcl-2"], # Target protein band names
lane_positions=[0.2, 0.4, 0.6, 0.8] # Lane positions (relative to image width)
)
print(result.summary())
result.save("output/quantification_results.csv")
Command Line Usage
python -m skills.western_blot_quantifier.scripts.main \
--input path/to/wb_image.png \
--reference GAPDH \
--targets p53,Bcl-2 \
--lanes 4 \
--output results.csv
Parameter Description
| Parameter | Description | Default |
|---|---|---|
image_path | Gel image path | Required |
reference_bands | Loading control protein name list | ["GAPDH"] |
target_bands | Target protein name list | [] |
lane_positions | Lane position list | Auto-detect |
threshold | Band detection threshold | 0.1 |
background_correction | Background correction method | "rolling_ball" |
Output Format
CSV Output Example
Lane,Protein,Raw_Intensity,Background,Corrected_Intensity,Normalized_to_Reference
1,GAPDH,125000.5,5000.2,120000.3,1.00
1,p53,85000.2,3000.1,82000.1,0.68
1,Bcl-2,62000.8,2500.5,59500.3,0.50
2,GAPDH,118000.3,4800.2,113200.1,1.00
...
Return Object
{
"raw_data": DataFrame, # Raw optical density data
"normalized_data": DataFrame, # Normalized data
"band_regions": List[Dict], # Detected band region coordinates
"statistics": Dict, # Statistical analysis results
"figures": Dict # Visualization chart paths
}
Dependencies
numpy>=1.21.0
opencv-python>=4.5.0
pandas>=1.3.0
matplotlib>=3.4.0
scipy>=1.7.0
scikit-image>=0.18.0
Installation
pip install -r requirements.txt
Notes
- Image Quality: High resolution, good contrast grayscale or black and white gel images are recommended
- Loading Control Selection: Common loading controls include GAPDH, β-actin, Tubulin; selection depends on experimental conditions
- Background Correction: Supports rolling_ball, median, none three background correction methods
- Lane Marking: If auto-detection is inaccurate, lane positions can be manually specified
Examples
Example 1: Basic Analysis
from skills.western_blot_quantifier.scripts.main import WesternBlotQuantifier
analyzer = WesternBlotQuantifier()
# Analyze 4-lane Western Blot results
result = analyzer.analyze(
image_path="experiment_data/wb_gel.png",
reference_bands=["GAPDH"],
target_bands=["p53", "p21"],
lane_count=4
)
# View normalized results
print(result.normalized_data)
# Save charts
result.save_figures("output/")
Example 2: Batch Processing
import glob
analyzer = WesternBlotQuantifier()
for image_path in glob.glob("experiments/*.png"):
result = analyzer.analyze(
image_path=image_path,
reference_bands=["β-actin"],
target_bands=["Target_Protein"],
lane_count=6
)
result.save(f"output/{Path(image_path).stem}_results.csv")
Algorithm Description
- Image Preprocessing: Grayscale conversion → Background correction → Denoising
- Lane Detection: Automatic lane boundary identification based on vertical projection analysis
- Band Detection: Band localization using 1D Gaussian fitting or peak detection algorithms
- Optical Density Calculation: Integrate grayscale values in band region, subtract background
- Normalization: Target protein value / Loading control protein value
Author
OpenClaw Skills
Risk Assessment
| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python/R scripts executed locally | Medium |
| Network Access | No external API calls | Low |
| File System Access | Read input files, write output files | Medium |
| Instruction Tampering | Standard prompt guidelines | Low |
| Data Exposure | Output files saved to workspace | Low |
Security Checklist
- No hardcoded credentials or API keys
- No unauthorized file system access (../)
- Output does not expose sensitive information
- Prompt injection protections in place
- Input file paths validated (no ../ traversal)
- Output directory restricted to workspace
- Script execution in sandboxed environment
- Error messages sanitized (no stack traces exposed)
- Dependencies audited
Prerequisites
# Python dependencies
pip install -r requirements.txt
Evaluation Criteria
Success Metrics
- Successfully executes main functionality
- Output meets quality standards
- Handles edge cases gracefully
- Performance is acceptable
Test Cases
- Basic Functionality: Standard input → Expected output
- Edge Case: Invalid input → Graceful error handling
- Performance: Large dataset → Acceptable processing time
Lifecycle Status
- Current Stage: Draft
- Next Review Date: 2026-03-06
- Known Issues: None
- Planned Improvements:
- Performance optimization
- Additional feature support