Interpret and explain scientific graphs, charts, and data visualizations for research publications, clinical presentations, and academic communications with precision and clarity.
from scripts.graph_interpreter import GraphInterpreter
interpreter = GraphInterpreter()
# Comprehensive graph analysis
analysis = interpreter.interpret(
image_path="figure_1.png",
graph_type="kaplan_meier",
context="oncology_phase3_trial",
audience="clinicians"
)
print(analysis.statistical_summary)
print(analysis.clinical_significance)
print(analysis.suggested_caption)
analysis = interpreter.analyze(
graph_type="forest_plot",
data={
"studies": ["Study A", "Study B", "Study C"],
"effect_sizes": [1.2, 0.8, 1.5],
"confidence_intervals": [[1.0, 1.4], [0.6, 1.0], [1.2, 1.8]],
"overall_effect": 1.15,
"heterogeneity_p": 0.04
}
)
Supported Graph Types:
| Graph Type | Common Use | Key Elements to Extract |
|---|---|---|
| ------------ | ------------ | ------------------------ |
| Kaplan-Meier | Survival analysis | Median survival, HR, 95% CI, log-rank p |
| Forest Plot | Meta-analysis | Effect size, CI, heterogeneity (I²), weights |
| ROC Curve | Diagnostic accuracy | AUC, sensitivity, specificity, optimal cutoff |
| Box Plot | Distribution comparison | Median, IQR, outliers, whiskers |
| Scatter Plot | Correlation | R², p-value, trend line, outliers |
| Bar Chart | Group comparisons | Means, SEM/SD, significance indicators |
| Heatmap | Expression/omics | Scale, clustering, row/column annotations |
| Volcano Plot | Differential analysis | Fold change, p-value, FDR threshold |
stats = interpreter.extract_statistics(
graph_data,
extract=[
"p_values",
"confidence_intervals",
"effect_sizes",
"sample_sizes",
"statistical_tests"
]
)
Statistical Reporting Standards:
# Example output structure
{
"primary_outcome": {
"measure": "Hazard Ratio",
"value": 0.72,
"ci_95": [0.58, 0.89],
"p_value": 0.003,
"interpretation": "32% risk reduction"
},
"secondary_outcomes": [...],
"significance_level": 0.05,
"multiple_comparison_adjusted": True
}
explanations = interpreter.generate_multi_audience(
analysis,
audiences=["researchers", "clinicians", "patients", "policy_makers"]
)
Explanation Templates:
For Researchers:
> "The Kaplan-Meier analysis demonstrates a statistically significant
> survival advantage for the experimental arm (HR 0.72, 95% CI 0.58-0.89,
> p=0.003). Median survival improved from 14.2 to 19.6 months.
> The proportional hazards assumption was verified (p=0.42)."
For Clinicians:
> "This trial shows patients on the new treatment lived about 5 months
> longer on average compared to standard care. The 32% reduction in
> death risk is significant and clinically meaningful. Consider this
> option for eligible patients."
For Patients:
> "The study found that people taking the new treatment lived longer
> than those on standard treatment. About 1 in 3 patients benefited
> from the new treatment. Side effects were manageable."
caption = interpreter.generate_caption(
analysis,
style="journal", # or "presentation", "poster"
word_limit=250,
include_statistics=True
)
Caption Structure:
Figure X. [Brief title]. [What is shown: X-axis shows..., Y-axis shows...,
lines/bars represent...]. [Key finding: Group A showed... compared to
Group B...]. [Statistics: HR 0.72 (95% CI 0.58-0.89), p=0.003].
[Conclusion: This demonstrates...].
appraisal = interpreter.critical_appraisal(
graph_data,
check=[
"appropriate_graph_type",
"axis_scaling",
"error_bars_present",
"sample_size_adequate",
"confounding_controlled",
"generalizability"
]
)
Common Graph Pitfalls:
| Issue | Problem | Better Approach |
|---|---|---|
| ------- | --------- | ----------------- |
| Truncated y-axis | Exaggerates differences | Start at 0 or clearly indicate break |
| No error bars | Hides variability | Include SD, SEM, or 95% CI |
| 3D effects | Distorts perception | Use 2D with clear labels |
| Dual y-axes | Confusing comparison | Separate graphs or normalized scale |
| p-hacking indicators | Multiple comparisons | Adjusted p-values, Bonferroni |
# Comprehensive analysis
python scripts/graph_interpreter.py \
--image survival_curve.png \
--type kaplan_meier \
--context "phase_3_oncology" \
--audience clinicians \
--output analysis.json
# Generate publication caption
python scripts/graph_interpreter.py \
--image forest_plot.png \
--type forest_plot \
--generate caption \
--journal-style nature \
--word-limit 200
# Batch process figures
python scripts/graph_interpreter.py \
--batch figures/ \
--output report.html \
--template comprehensive
# Analyze survival curve
analysis = interpreter.interpret(
graph_type="kaplan_meier",
primary_endpoint="overall_survival",
treatment_arms=["Experimental", "Control"],
key_metrics=["median_os", "hr", "ci", "p_value"]
)
# Generate regulatory-ready summary
regulatory_summary = interpreter.generate_regulatory_summary(
analysis,
guideline="ICH_E3"
)
# Interpret meta-analysis
analysis = interpreter.interpret_forest_plot(
studies=included_studies,
check_heterogeneity=True,
assess_publication_bias=True
)
# Generate GRADE assessment
grade_rating = interpreter.generate_grade_rating(analysis)
# Analyze diagnostic test
analysis = interpreter.interpret_roc(
curves=["Test A", "Test B", "Combined"],
optimal_cutoffs=True,
clinical Utility=True
)
# Clinical decision support
decision_aid = interpreter.generate_decision_aid(analysis)
Before Interpretation:
During Interpretation:
After Interpretation:
Statistical Communication:
Visual Analysis:
❌ Correlation = Causation: "X causes Y because they're correlated"
✅ Cautious Interpretation: "X is associated with Y; other factors may explain this"
❌ Overstating Significance: "Highly significant (p<0.001)" as meaning large effect
✅ Proper Framing: "Statistically significant but modest effect size (d=0.2)"
❌ Ignoring Confidence Intervals: Reporting point estimate only
✅ Interval Reporting: "Effect: 1.5 (95% CI: 0.9-2.4), suggesting uncertainty"
Skill ID: 209 | Version: 1.0 | License: MIT
共 1 个版本