Automatically identify Western Blot gel bands, perform densitometric analysis, and calculate normalized values relative to loading controls.
See ## Features above for related details.
scripts/__init__.py plus 1 additional script(s).text
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
See ## Usage above for related details.
bash
cd "20260318/scientific-skills/Data Analytics/western-blot-quantifier"
python -m py_compile scripts/main.py
python scripts/main.py --help
Example run plan:
CONFIG block or documented parameters if the script uses fixed settings.python scripts/main.py with the validated inputs.See ## Workflow above for related details.
scripts/__init__.py with additional helper scripts under scripts/.Use this command to verify that the packaged script entry point can be parsed before deeper execution.
bash
python -m py_compile scripts/main.py
Use these concrete commands for validation. They are intentionally self-contained and avoid placeholder paths.
bash
python -m py_compile scripts/main.py
python scripts/main.py --help
python
# 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")
text
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
ParameterDescriptionDefaultimage_pathGel image pathRequiredreference_bandsLoading control protein name list["GAPDH"]target_bandsTarget protein name list[]lane_positionsLane position listAuto-detectthresholdBand detection threshold0.1background_correctionBackground correction method"rolling_ball"
csv
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
...
python
{
"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
}
text
pip install -r requirements.txt
python
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/")
python
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")
OpenClaw Skills
Risk IndicatorAssessmentLevelCode ExecutionPython/R scripts executed locallyMediumNetwork AccessNo external API callsLowFile System AccessRead input files, write output filesMediumInstruction TamperingStandard prompt guidelinesLowData ExposureOutput files saved to workspaceLow
text
# Python dependencies
pip install -r requirements.txt
Current Stage: Draft
Next Review Date: 2026-03-06
Known Issues: None
Planned Improvements:
Every final response should make these items explicit when they are relevant:
scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.This skill accepts requests that match the documented purpose of western-blot-quantifier and include enough context to complete the workflow safely.
Do not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:
western-blot-quantifieronly handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.
Use the following fixed structure for non-trivial requests:
If the request is simple, you may compress the structure, but still keep assumptions and limits explicit when they affect correctness.