This repository contains analysis tools for tracking research lab metrics from a Roam Research-based discourse graph system. The primary focus is on quantifying researcher contributions, onboarding timelines, and knowledge graph structure.
- Roam Research exports: Daily notes, experiment pages, result (RES) pages
- Discourse graph nodes: ISS (Issues), RES (Results), EVD (Evidence), QUE (Questions), HYP (Hypotheses), CLM (Claims), CON (Conclusions)
- metrics_data.json: Pre-extracted metrics about issues, issue claiming, and researcher activity
Evidence bundles are stored in output/evidence_bundles/ with JSON-LD + RO-Crate metadata format:
evd7-student-onboarding/: Undergraduate researcher onboarding timeline analysis
| ID | Start Date | Days to Exp | Days to Plot | Days to RES | Pathway |
|---|---|---|---|---|---|
| A | Feb 23, 2024 | 42 | 118 | 125 | Self-directed exploration |
| B | Oct 10, 2024 | 5 | 5 | 47 | Assigned entry project |
| C | Jun 23, 2025 | 7 | 14 | 36 | Direct assignment |
src/student_timeline_analysis.py: Generates timeline visualizationsoutput/visualizations/fig7_student_timelines.png: Static matplotlib figureoutput/visualizations/fig7_student_timelines_app.html: Polished interactive HTML/JS app (matches target design)output/visualizations/fig7_student_timelines.html: Plotly-based interactive versionoutput/student_milestones.json: Extracted milestone data
The target design (target_plot.png) features:
- Single consolidated timeline - All researchers share one x-axis at bottom
- Vertical pins rising at different heights per researcher to avoid overlap
- Circular icons with symbols inside (play=start, flask=experiment, chart=plot, checkmark=result)
- Thin progress bars at bottom showing each researcher's timeline span (color-coded by researcher)
- Summary cards with insights about each pathway
- Interactive zoom toggle for first 50 days
- Clean typography, whitespace, and modern styling
Important: The polished design requires HTML/JS (fig7_student_timelines_app.html), not matplotlib. Matplotlib has limitations for achieving this level of visual polish.
All three undergraduate researchers generated an original result from their analysis projects within ~4 months of joining the lab, with two creating a result within ~1 month
# In src/student_timeline_analysis.py
generate_student_timeline_visualizations(output_dir) # Main entry point
create_pin_timeline() # Matplotlib static PNG
create_pin_timeline_interactive() # Plotly HTML
create_comparison_bar_chart() # Bar chart comparing milestonesresearcher_colors = {
'A': '#3B82F6', # Blue
'B': '#10B981', # Emerald/teal
'C': '#F59E0B', # Amber/orange
}phase_colors = {
'onboarding': '#22C55E', # Green (Start → Exp)
'development': '#8B5CF6', # Purple (Exp → RES)
}python src/student_timeline_analysis.pyOutputs:
output/visualizations/fig7_student_timelines.pngoutput/visualizations/fig7_student_timelines.htmloutput/visualizations/student_milestone_comparison.pngoutput/student_milestones.json