v1.0 to git:20260331.51dcb8c

226 added, 192 removed. Audit A to A.

---
name: western-blot-quantification
- description: "Standardized workflow for analyzing Western blot images with multiple experimental repetitions. Covers band detection, intensity measurement, two-step normalization, fold change calculation, statistical aggregation, and publication-ready visualization."
+ description: "Guide to quantitative Western blot analysis covering band detection, two-step normalization, fold change calculation, statistical aggregation across biological replicates, and publication-ready visualization. Consult when analyzing blot images with multiple conditions and repetitions, choosing normalization strategies, or preparing densitometry figures for publication."
license: CC-BY-4.0
- compatibility: Python 3.10+
- metadata:
- authors: Biomni Team
- version: "1.0"
---
# Western Blot Quantification and Analysis
## Overview
- This guide provides a standardized workflow for analyzing Western blot images, particularly for experiments with multiple repetitions and conditions. The protocol covers band intensity detection, normalization procedures, statistical aggregation, and visualization best practices.
+ Western blot quantification converts qualitative band images into numerical data suitable for statistical comparison and publication. Despite being one of the most widely used techniques in molecular biology, Western blot densitometry is frequently performed inconsistently, leading to results that are difficult to reproduce or compare across laboratories.
- ## Standard Workflow
+ This guide covers the full analysis chain: band detection and ROI placement, intensity measurement, two-step normalization to correct for loading variation, fold change calculation relative to control conditions, statistical aggregation across biological replicates, and publication-ready figure generation. It is designed for multi-condition, multi-replicate experiments where transparent and reproducible quantification is essential for credible results.
- ### Step 1: Image Preprocessing and Band Detection
+ The workflow assumes access to image analysis tools for band detection (such as `analyze_pixel_distribution` and `find_roi_from_image`) and standard scientific computing environments for statistical analysis and plotting. While the principles apply broadly to any densitometry analysis, the specific tool references and ROI detection strategies described here are tailored for automated or semi-automated analysis pipelines.
- **Objective**: Identify ROIs and isolate individual bands in the Western blot image.
+ ## Key Concepts
- **Key Considerations**:
- - Use analyze_pixel_distribution then find_roi_from_image functions
- - If find_roi_from_image couldn't detect ROIs properly, retry with different lower_threshold and upper_threshold parameters
- - If there are still undetected ROIs, you can manually infer the coordinates of undetected ROIs by using the correctly detected ROIs (IMPORTANT: You MUST preserve the coordinates of correctly detected ROIs)
- - The final image with ROIs should also be saved as an image
- - Detect all bands for target proteins
- - Identify experimental repetitions (typically arranged in lanes)
- - Recognize different conditions (e.g., control, treatment groups)
- - Handle potential artifacts, background noise, and lane alignment issues
+ ### Two-Step Normalization
- **Tools**: analyze_pixel_distribution, find_roi_from_image
+ Western blot signals vary due to unequal protein loading, transfer efficiency, and detection conditions. Two-step normalization corrects for these sources of variation sequentially.
- ### Step 2: Intensity Measurement
+ **Step A -- Loading control normalization.** Divide the loading control protein intensity (e.g., SMAD2) by a housekeeping protein intensity (e.g., GAPDH) to obtain a loading-corrected reference value:
- **Objective**: Quantify band intensities for all detected bands.
+ ```
+ Loading_norm = Intensity_LoadingControl / Intensity_Housekeeping
+ ```
- **Procedure**:
- 1. For each lane/repetition, measure the intensity of:
- - Target protein band (e.g., PSMAD2)
- - Loading control band (e.g., SMAD2, GAPDH)
- - Background intensity (for correction if needed)
+ **Step B -- Target protein normalization.** Divide the target protein intensity (e.g., PSMAD2) by the loading-normalized reference:
- 2. Record measurements in a structured format:
- - Condition name (e.g., "control", "P144", "TGF-b1", "TbAb")
- - Repetition number (e.g., Rep1, Rep2, Rep3)
- - Protein target (e.g., PSMAD2, SMAD2, GAPDH)
- - Raw intensity value
+ ```
+ Target_norm = Intensity_Target / Loading_norm
+ ```
- **Best Practices**:
- - Use consistent ROI (Region of Interest) sizes for all bands
- - Apply background subtraction if necessary
- - Verify band detection visually before proceeding
+ This yields an intensity value corrected for both total protein loading and relative protein levels.
- ### Step 3: Normalization Procedure
+ **Alternative normalization methods:**
- **Objective**: Normalize target protein intensities to account for loading variations.
+ - **Single loading control**: When only one housekeeping protein is available, normalize the target directly: `Target_norm = Intensity_Target / Intensity_GAPDH`
+ - **Total protein normalization**: With Ponceau S or stain-free gels: `Target_norm = Intensity_Target / Intensity_TotalProtein`
+ - **Common housekeeping proteins**: GAPDH, beta-actin, alpha-tubulin, vinculin, lamin B1 (nuclear fraction). Choose one that is stable across your experimental conditions and has a molecular weight sufficiently different from your target protein to avoid signal overlap on the same membrane.
- **Two-Step Normalization Process**:
+ ### Fold Change Calculation
- #### Step A: Loading Control Normalization
- Calculate the relative intensity of the loading control protein:
+ After normalization, results are expressed relative to a control condition so that biological changes are interpretable across independent repetitions. Fold change provides a dimensionless ratio that can be meaningfully compared across experiments performed on different days or with different reagent lots.
```
- SMAD2_norm = Intensity_SMAD2 / Intensity_GAPDH
+ Fold_Change = Target_norm_condition / Target_norm_control
```
- This accounts for variations in total protein loading across samples.
+ - The control condition has a fold change of 1.0 by definition.
+ - A fold change of 1.5 means a 50% increase relative to control; 0.7 means a 30% decrease.
+ - Always calculate fold change within the same repetition before aggregating across repetitions. This removes inter-blot variability that normalization alone cannot correct.
+ - When there are multiple control lanes within one repetition (e.g., technical replicates of the control), average them first to obtain a single control reference value per repetition.
- #### Step B: Target Protein Normalization
- Calculate the final normalized target protein intensity:
+ ### Common Experimental Designs
- ```
- Target_value = Intensity_PSMAD2 / SMAD2_norm
- ```
+ Understanding your experimental layout determines how normalization and fold change calculations are structured.
- This provides the normalized PSMAD2 intensity that accounts for both loading control and relative protein levels.
+ **Multiple conditions with replicates.** Structure: 3-4 conditions times 3 repetitions = 9-12 lanes. Each repetition contains one lane per condition, typically run on the same gel. Normalize within each repetition first, calculate fold change relative to the control condition within that repetition, then aggregate fold changes across repetitions. This is the most common design for comparing treatment effects.
- **Alternative Normalization Methods**:
- - **Single loading control**: If only GAPDH is available: `Target_norm = Intensity_Target / Intensity_GAPDH`
- - **Total protein normalization**: If using total protein stain: `Target_norm = Intensity_Target / Intensity_TotalProtein`
- - **Housekeeping gene**: Common controls include GAPDH, b-actin, a-tubulin
+ **Time course.** Structure: multiple time points times conditions times repetitions. Example: 0h, 6h, 12h, 24h for both control and treatment groups. Normalize all time points to the time-0 control within each repetition. This design reveals kinetic information about protein regulation and requires careful lane assignment to fit all samples on a single gel or consistent inter-gel normalization if split across gels.
- ### Step 4: Relative Quantification (Fold Change Calculation)
+ **Dose response.** Structure: multiple concentrations times repetitions. Example: 0, 1, 5, 10, 50 uM of a compound. Normalize to the 0-concentration (vehicle) control within each repetition. Results are typically plotted as a dose-response curve with fold change on the Y-axis and concentration on the X-axis. Consider using a log scale for the concentration axis when the range spans more than one order of magnitude.
- **Objective**: Express results relative to a control condition.
+ ### Statistical Aggregation Across Replicates
- **Procedure**:
- 1. For each experimental repetition, identify the control condition
- 2. Calculate fold change for each condition:
+ After fold change calculation within each replicate, combine data across repetitions:
```
- Fold_Change = Target_value_condition / Target_value_control
+ Mean = sum(values) / n
+ SD = sqrt( sum( (value - mean)^2 ) / (n - 1) )
+ SE = SD / sqrt(n)
```
- 3. The control condition will have a fold change of 1.0 by definition
- 4. Treatment conditions will show fold changes relative to control (e.g., 1.5 = 50% increase, 0.7 = 30% decrease)
+ - Minimum of 3 biological replicates for meaningful statistics.
+ - Report both the central tendency (mean) and an error measure (SD or SE).
+ - Consider t-tests (two conditions) or ANOVA (three or more conditions) for formal hypothesis testing.
+ - When reporting, always state the number of independent biological replicates (not technical replicates) and specify whether error bars represent SD or SE.
- **Important Notes**:
- - Always normalize within the same repetition before comparing across repetitions
- - Ensure control condition is clearly identified
- - Document which condition serves as the baseline
+ ## Decision Framework
- ### Step 5: Statistical Aggregation
+ Choosing the right normalization and error-reporting strategy:
- **Objective**: Combine data from multiple experimental repetitions.
+ ```
+ Question: What normalization approach should I use?
+ ├── Have both loading control AND housekeeping protein?
+ │ └── Yes → Two-step normalization (Loading_norm then Target_norm)
+ ├── Have only one housekeeping protein?
+ │ └── Yes → Single-step normalization (Target / Housekeeping)
+ ├── Have total protein stain (Ponceau S, stain-free)?
+ │ └── Yes → Total protein normalization
+ └── No internal control available?
+ └── Not recommended — acquire a control or use total protein stain
- **Procedure**:
- 1. Collect normalized values (or fold changes) from all repetitions
- 2. For each condition, calculate:
- - **Mean**: Average across repetitions
- - **Standard Deviation (SD)**: Measure of variability
- - **Standard Error (SE)**: SD / sqrt(n), where n = number of repetitions
- - **Sample size (n)**: Number of repetitions
+ Question: Report SD or SE?
+ ├── Emphasizing biological variability → SD
+ └── Emphasizing precision of the mean estimate → SE
+ ```
- **Statistical Considerations**:
- - Minimum of 3 repetitions recommended for meaningful statistics
- - Report both mean and error measure (SD or SE)
- - Consider statistical tests (t-test, ANOVA) if comparing multiple conditions
- - Document any excluded repetitions and reasons
+ | Scenario | Recommended Approach | Rationale |
+ |----------|---------------------|-----------|
+ | Target + loading control + housekeeping | Two-step normalization | Corrects both loading and relative protein variation |
+ | Target + single housekeeping protein | Single-step normalization | Simpler; sufficient when loading control is unavailable |
+ | Target + total protein stain | Total protein normalization | Avoids reliance on a single housekeeping gene |
+ | Comparing treatment effect sizes | Report fold change with SE | SE reflects confidence in the mean across replicates |
+ | Showing replicate spread | Report fold change with SD | SD reflects biological variability among replicates |
+ | Fewer than 3 replicates | Report individual values (no aggregation) | Statistics are unreliable with n < 3 |
- ### Step 6: Visualization
+ ## Best Practices
- **Objective**: Create clear, publication-ready visualizations.
+ 1. **Always normalize -- never report raw intensities.** Raw band intensities are confounded by loading, transfer, and exposure differences. Normalization is mandatory for any cross-lane comparison.
- **Bar Graph Requirements**:
- 1. **X-axis**: Experimental conditions (e.g., Control, P144, TGF-b1, TbAb)
- 2. **Y-axis**: Normalized values or fold change (typically starting from 0)
- 3. **Bars**: Mean values for each condition
- 4. **Error bars**: Standard deviation or standard error
- 5. **Labels**: Clear condition names, units, sample size (n=X)
+ 2. **Choose a stable housekeeping protein.** The housekeeping control must not change expression across your experimental conditions. Validate stability before using GAPDH, beta-actin, or alpha-tubulin as a reference.
- **Visualization Best Practices**:
- - Use consistent colors for conditions across figures
- - Include statistical significance indicators if applicable (e.g., *, **, ***)
- - Add figure title and axis labels
- - Save in high resolution (300 DPI for publications)
+ 3. **Normalize within each replicate before aggregating.** Inter-blot variability (exposure time, reagent lot) makes direct comparison of absolute intensities across blots unreliable. Fold change within each replicate removes this source of error.
- **Verification Images**:
- - Create grid/overlay images showing detected ROIs
- - Helps verify correct band detection
- - Useful for troubleshooting and quality control
- - Save as separate file (e.g., `wb_grid_verification.png`)
+ 4. **Use consistent ROI sizes for all bands.** Inconsistent region sizes introduce measurement bias. Define a standard ROI dimension and apply it uniformly across all lanes and proteins.
- ## Common Experimental Designs
+ 5. **Verify detection with grid overlay images.** Always generate and review a verification image showing detected ROIs overlaid on the original blot. Save it as a separate file (e.g., `wb_grid_verification.png`) for quality control and peer review.
- ### Design 1: Multiple Conditions with Replicates
- - **Structure**: 3-4 conditions x 3 repetitions = 9-12 lanes
- - **Example**: Control, Treatment A, Treatment B, Treatment C (each in triplicate)
- - **Analysis**: Normalize within each repetition, then aggregate across repetitions
+ 6. **Save intermediate data for re-analysis.** Export raw intensities, normalized values, and fold changes to a CSV or spreadsheet. This allows re-analysis if normalization strategy or control assignment changes.
- ### Design 2: Time Course
- - **Structure**: Multiple time points x conditions x repetitions
- - **Example**: 0h, 6h, 12h, 24h for Control and Treatment
- - **Analysis**: Normalize to time 0 control, then compare across time points
+ 7. **Save figures at publication resolution.** Use 300 DPI minimum. Include clear axis labels, condition names, sample sizes (n=X), and error bars. Add statistical significance indicators (*, **, ***) where applicable.
- ### Design 3: Dose Response
- - **Structure**: Multiple concentrations x repetitions
- - **Example**: 0, 1, 5, 10, 50 uM treatment
- - **Analysis**: Normalize to 0 concentration, plot dose-response curve
+ 8. **Document all exclusions.** If a replicate or lane is excluded from analysis, record the reason (artifact, failed transfer, saturated signal) alongside the data.
- ## Troubleshooting
+ ## Common Pitfalls
- ### Issue: Inconsistent Band Detection
- **Problem**: Some bands not detected or incorrectly identified
- **Solutions**:
- - Adjust detection parameters (threshold, size filters)
- - Manually verify and correct ROI placement
- - Check image quality and contrast
- - Use grid verification image to validate detection
+ 1. **Bands not detected or incorrectly identified.** Automated detection can miss faint bands or merge adjacent bands.
+ - *How to avoid*: Adjust detection parameters (threshold, size filters). Manually verify and correct ROI placement using the grid verification image. If automated detection fails, infer coordinates of missed bands from correctly detected neighbors while preserving the correct detections.
- ### Issue: High Variability Between Repetitions
- **Problem**: Large standard deviations or inconsistent results
- **Solutions**:
- - Verify loading control normalization is correct
- - Check for technical artifacts (bubbles, uneven transfer)
- - Ensure consistent sample preparation
- - Consider excluding outliers if justified
+ 2. **High variability between repetitions producing large standard deviations.** This often indicates a normalization or sample preparation issue rather than true biological variability.
+ - *How to avoid*: Confirm that loading control normalization was applied correctly. Inspect blots for technical artifacts (bubbles, uneven transfer). Ensure consistent sample preparation across replicates. Exclude outliers only with documented justification.
- ### Issue: Unexpected Normalization Results
- **Problem**: Normalized values don't match expected biological response
- **Solutions**:
- - Verify loading control bands are appropriate (not saturated)
- - Check that control condition is correctly identified
- - Ensure all calculations are performed in correct order
- - Review raw intensity values for anomalies
+ 3. **Unexpected normalization results that contradict known biology.** Normalized values may be inverted or flat when the loading control is inappropriate.
+ - *How to avoid*: Verify that the housekeeping protein is not regulated by the experimental treatment. Check that loading control bands are not saturated. Confirm the correct sample is assigned as control. Review raw intensities for anomalies before normalization.
- ### Issue: Background Issues
- **Problem**: High background affecting intensity measurements
- **Solutions**:
- - Apply background subtraction
- - Use local background measurement near each band
- - Adjust image preprocessing (contrast, brightness)
- - Consider re-imaging if background is too high
+ 4. **High or uneven background distorting intensity measurements.** Background signal inflates measured intensities and reduces dynamic range.
+ - *How to avoid*: Apply local background subtraction using measurements taken adjacent to each band. Adjust image preprocessing (contrast, brightness) before quantification. If background is extreme, consider re-imaging or re-running the blot.
- ## Quality Control Checklist
+ 5. **Saturated bands yielding unreliable intensity values.** Overexposed bands plateau at the detector maximum, making quantification inaccurate regardless of normalization.
+ - *How to avoid*: Check intensity histograms before analysis. Re-expose blots at shorter times if saturation is detected. Use non-saturated exposures for quantification even if a longer exposure looks better visually.
- Before finalizing analysis, verify:
- - [ ] All bands detected correctly (verify with grid image)
- - [ ] Loading control bands are present and measurable for all samples
- - [ ] Normalization calculations are correct
- - [ ] Control condition is clearly identified
- - [ ] All repetitions included in statistical analysis
- - [ ] Error bars represent appropriate measure (SD or SE)
- - [ ] Visualization clearly shows experimental design
- - [ ] Results are biologically plausible
+ 6. **Reporting fold change without documenting the control condition.** Readers cannot interpret fold change values without knowing the baseline.
+ - *How to avoid*: Explicitly state which condition serves as the fold change denominator in figure legends, methods, and data tables.
- ## Output Files
+ 7. **Using SD and SE interchangeably.** SD and SE answer different questions; confusing them misleads readers about variability versus precision.
+ - *How to avoid*: Use SD when showing biological spread among replicates. Use SE when emphasizing confidence in the estimated mean. Always state which error measure is plotted.
- **Required Outputs**:
- 1. **Quantification results**: CSV or Excel file with:
- - Raw intensities
- - Normalized values
- - Fold changes
- - Statistical summaries (mean, SD, SE)
+ ## Workflow
- 2. **Visualization**: Bar graph image (e.g., `psmad2_quantification.png`)
- - High resolution (300 DPI minimum)
- - Clear labels and error bars
- - Publication-ready format
+ ### Step 1: Image Preprocessing and Band Detection
- 3. **Verification image** (optional but recommended): `wb_grid_verification.png`
- - Shows detected ROIs
- - Helps validate analysis
+ **Objective**: Identify ROIs and isolate individual bands in the Western blot image.
- ## Example Workflow Summary
+ 1. Run `analyze_pixel_distribution` on the blot image to characterize the intensity histogram and determine appropriate thresholds.
+ 2. Run `find_roi_from_image` to detect band regions automatically.
+ 3. If detection is incomplete or incorrect:
+ - Retry with adjusted `lower_threshold` and `upper_threshold` parameters based on the pixel distribution.
+ - If some ROIs remain undetected after parameter tuning, manually infer their coordinates from the spacing and positions of correctly detected ROIs. Preserve all correctly detected ROI coordinates unchanged.
+ 4. Save the final image with all ROIs overlaid as a verification file (e.g., `wb_grid_verification.png`).
+ 5. Catalog detected bands by protein target (target protein, loading control, housekeeping), lane number, and condition assignment.
+ 6. Decision point: If more than 20% of bands require manual correction, consider whether image quality is sufficient for reliable quantification.
- For a typical experiment with 3 repetitions and 4 conditions:
+ ### Step 2: Intensity Measurement
- 1. **Detect bands**: Identify all PSMAD2, SMAD2, and GAPDH bands across 12 lanes
- 2. **Measure intensities**: Extract intensity values for each band
- 3. **Normalize**:
- - Step A: SMAD2_norm = SMAD2 / GAPDH (for each sample)
- - Step B: Target_value = PSMAD2 / SMAD2_norm (for each sample)
- 4. **Calculate fold change**: Target_value_condition / Target_value_control (within each repetition)
- 5. **Aggregate**: Calculate mean +/- SD across 3 repetitions for each condition
- 6. **Visualize**: Create bar graph with error bars
- 7. **Save**: Export quantification table and visualization images
+ **Objective**: Quantify band intensities for all detected bands.
- ## Key Formulas Reference
+ 1. For each lane and repetition, measure the intensity of:
+ - Target protein band (e.g., PSMAD2)
+ - Loading control band (e.g., SMAD2, GAPDH)
+ - Background intensity (for subtraction if needed)
+ 2. Record measurements in a structured table with columns:
+ - Condition name (e.g., "control", "P144", "TGF-b1", "TbAb")
+ - Repetition number (Rep1, Rep2, Rep3)
+ - Protein target (PSMAD2, SMAD2, GAPDH)
+ - Raw intensity value
+ 3. Use consistent ROI sizes across all bands. Apply background subtraction where necessary. Visually verify band detection before proceeding.
+ ### Step 3: Normalization
+
+ **Objective**: Normalize target protein intensities to correct for loading variation.
+
+ Apply the two-step normalization process:
+
```
- Loading Control Normalization:
- Loading_norm = Intensity_LoadingControl / Intensity_Housekeeping
+ Step A: Loading_norm = Intensity_LoadingControl / Intensity_Housekeeping
+ Step B: Target_norm = Intensity_Target / Loading_norm
+ ```
- Target Normalization:
- Target_norm = Intensity_Target / Loading_norm
+ If only a single housekeeping protein is available, use single-step normalization:
- Fold Change:
- Fold_Change = Target_norm_condition / Target_norm_control
+ ```
+ Target_norm = Intensity_Target / Intensity_Housekeeping
+ ```
- Statistics:
- Mean = sum(values) / n
- SD = sqrt[sum(value - mean)^2 / (n-1)]
- SE = SD / sqrt(n)
+ See Key Concepts for alternative methods (total protein normalization).
+
+ ### Step 4: Fold Change Calculation
+
+ **Objective**: Express results relative to a control condition.
+
+ 1. Within each repetition, identify the control condition.
+ 2. Divide each normalized value by the control value from the same repetition:
+
```
+ Fold_Change = Target_norm_condition / Target_norm_control
+ ```
- ## Best Practices
+ 3. The control condition yields fold change = 1.0.
+ 4. Decision point: If fold changes vary wildly across replicates for the same condition, revisit normalization and check for artifacts before proceeding to aggregation.
- 1. **Always normalize**: Never use raw intensities without normalization
- 2. **Use appropriate controls**: Choose loading controls that are stable across conditions
- 3. **Verify detection**: Always review grid/verification images
- 4. **Document exclusions**: Note any excluded samples and reasons
- 5. **Report statistics**: Include both mean and error measure
- 6. **Save intermediate data**: Keep raw intensities for potential re-analysis
- 7. **Visual validation**: Compare visualization with expected biological response
+ ### Step 5: Statistical Aggregation
+
+ **Objective**: Combine data from multiple experimental repetitions into summary statistics.
+
+ 1. Collect fold change values from all repetitions for each condition.
+ 2. For each condition, calculate:
+ - **Mean**: Average fold change across repetitions.
+ - **Standard Deviation (SD)**: Measure of biological variability among replicates.
+ - **Standard Error (SE)**: SD / sqrt(n), reflecting precision of the mean estimate.
+ - **Sample size (n)**: Number of independent repetitions included.
+ 3. Apply statistical tests as appropriate:
+ - Two conditions: unpaired t-test (or paired t-test if replicates are matched).
+ - Three or more conditions: one-way ANOVA followed by post-hoc pairwise comparisons (e.g., Tukey HSD).
+ - Non-normal data or small n: consider non-parametric alternatives (Mann-Whitney U, Kruskal-Wallis).
+ 4. Document any excluded repetitions with reasons. Record p-values and the test used.
+
+ ### Step 6: Visualization
+
+ **Objective**: Create clear, publication-ready figures that accurately represent the quantification results.
+
+ **Bar graph structure:**
+ - **X-axis**: Experimental conditions (e.g., Control, P144, TGF-b1, TbAb).
+ - **Y-axis**: Fold change or normalized intensity. The axis should start from 0 to avoid visual exaggeration of differences.
+ - **Bars**: Mean values per condition.
+ - **Error bars**: SD or SE -- always specify which in the figure legend.
+ - **Labels**: Clear condition names, axis titles with units, sample sizes (n=X) either in the legend or on the figure.
+ - **Resolution**: 300 DPI minimum for publication; 150 DPI acceptable for drafts.
+
+ **Additional formatting guidance:**
+ - Use consistent colors for conditions across all figures in the same manuscript.
+ - Add statistical significance indicators where applicable: * for p < 0.05, ** for p < 0.01, *** for p < 0.001.
+ - Include a figure title that describes what is being measured and under which conditions.
+ - For dose-response experiments, consider line plots with error bars instead of bar graphs.
+ - For time-course experiments, use line plots with time on the X-axis.
+ - Save figures in both vector (SVG or PDF) and raster (PNG at 300 DPI) formats when possible.
+
+ **Required output files:**
+ 1. Quantification table (CSV/Excel) with raw intensities, normalized values, fold changes, and statistical summaries.
+ 2. Bar graph figure (e.g., `psmad2_quantification.png`) at publication resolution.
+ 3. Verification image (e.g., `wb_grid_verification.png`) showing detected ROIs.
+
+ ### Example: Typical 4-Condition Experiment
+
+ For a typical experiment with 4 conditions (Control, P144, TGF-b1, TbAb) and 3 repetitions:
+
+ 1. **Detect bands**: Identify all PSMAD2, SMAD2, and GAPDH bands across 12 lanes (4 conditions x 3 reps).
+ 2. **Measure intensities**: Extract raw intensity values for each of the 36 bands (12 lanes x 3 proteins).
+ 3. **Normalize**:
+ - Step A: `SMAD2_norm = Intensity_SMAD2 / Intensity_GAPDH` (for each of 12 samples)
+ - Step B: `Target_value = Intensity_PSMAD2 / SMAD2_norm` (for each of 12 samples)
+ 4. **Calculate fold change**: `Fold_Change = Target_value_condition / Target_value_control` (within each of 3 repetitions)
+ 5. **Aggregate**: Calculate mean +/- SD across 3 repetitions for each of 4 conditions.
+ 6. **Visualize**: Create bar graph with 4 bars, error bars, and significance indicators.
+ 7. **Save**: Export quantification table (CSV) and visualization images (PNG at 300 DPI).
+
+ This example produces 4 mean fold change values with error bars, ready for a bar graph.
+
+ ## Protocol Guidelines
+
+ These general procedural guidelines apply across all Western blot quantification workflows regardless of the specific experimental design.
+
+ 1. **Image acquisition**: Capture blot images in a linear dynamic range. Avoid auto-contrast adjustments that clip pixel values. If the imaging system supports it, acquire multiple exposures and select the one where no bands are saturated.
+
+ 2. **Lane assignment documentation**: Before beginning analysis, create a clear lane map linking each physical lane to its condition, repetition number, and protein target. Ambiguity in lane assignment is one of the most common sources of analysis error.
+
+ 3. **Background measurement**: Measure background intensity in a region adjacent to each band (same size as the band ROI) rather than using a single global background value. Local background subtraction accounts for spatial variation in membrane staining.
+
+ 4. **Replicate independence**: Each replicate should represent an independent biological experiment (separate cell lysates, separate animals), not technical replicates (same lysate loaded multiple times). Technical replicates measure pipetting precision, not biological effect size.
+
+ 5. **Data archiving**: Archive the original unmodified blot image alongside all analysis files. Any image adjustments (brightness, contrast, cropping) applied for visualization must also be documented and applied uniformly across the entire image.
+
+ 6. **Reporting standards**: Follow journal-specific Western blot reporting guidelines. Many journals now require the full unedited blot image as supplementary material, in addition to the cropped panels shown in figures. The Journal of Biological Chemistry, EMBO Journal, and others have detailed policies on acceptable image adjustments and required source data.
+
+ 7. **Antibody validation**: Record antibody catalog numbers, lot numbers, dilutions, and incubation times. These details are essential for troubleshooting unexpected results and for reproducibility by other researchers.
+
+ ## Further Reading
+
+ - [ImageJ User Guide -- Gel Analysis](https://imagej.net/ij/docs/menus/analyze.html) -- Standard reference for densitometry and gel quantification using ImageJ/FIJI
+ - [Bhatt et al. (2014) "Bhatt et al. -- Quantitative Western Blotting"](https://doi.org/10.1002/0471140864.ps1006s75) -- Current Protocols in Protein Science chapter on quantitative Western blotting methods and normalization
+ - [Ghosh et al. (2014) "The necessity of and strategies for improving confidence in the accuracy of western blots"](https://doi.org/10.1586/14789450.2014.939635) -- Expert review covering best practices for Western blot reproducibility and accurate quantification
+ - [Bass et al. (2017) "Total protein analysis as a reliable loading control for quantitative fluorescent Western blotting"](https://doi.org/10.1371/journal.pone.0182592) -- Evidence for total protein normalization as an alternative to single housekeeping gene controls
+
+ ## Related Skills
+
+ - `matplotlib-scientific-plotting` -- Generating publication-quality bar graphs, error bar formatting, and figure export settings used in the visualization step
+ - `biostatistics-experimental-design` -- Statistical test selection (t-test vs ANOVA), power analysis, and replicate number planning for Western blot experiments
+ - `imagej-image-analysis` -- Detailed ImageJ/FIJI usage for gel analysis, ROI management, and densitometry measurement workflows
+ - `scientific-figure-design` -- Principles of effective figure layout, color accessibility, and journal formatting requirements