Learning Graph Quality Metrics Report¶
Overview¶
- Total Concepts: 200
- Foundational Concepts (no prerequisites, other concepts depend on them): 7
- Terminal Nodes (nothing depends on them, but have prerequisites): 81
- Orphaned Nodes (completely disconnected, no edges): 0
- Concepts with Dependencies: 193
- Average Dependencies per Concept: 1.98
Graph Structure Validation¶
- Valid DAG Structure: ✅ Yes
- Self-Dependencies: None detected ✅
- Cycles Detected: 0
Foundational Concepts¶
These concepts have no prerequisites:
- 1: Python Type Hints
- 4: DataFrames
- 8: SQL Databases
- 9: Lazy Evaluation
- 10: Method Chaining
- 11: Visitor Pattern
- 12: Directed Acyclic Graph
Dependency Chain Analysis¶
- Maximum Dependency Chain Length: 11
Longest Learning Path:¶
- Method Chaining (ID: 10)
- col Function (ID: 25)
- Expression Building (ID: 27)
- BaseExpressionAPI (ID: 28)
- API Builder Protocols (ID: 76)
- Expression System Protocols (ID: 77)
- PolarsExpressionSystem (ID: 79)
- Polars Expr Compilation (ID: 82)
- Expression Testing (ID: 90)
- Cross-Backend Parametrize (ID: 91)
- xfail Known Quirks (ID: 92)
Terminal Nodes Analysis¶
Terminal nodes are concepts that nothing else depends on but have prerequisites. They represent natural endpoints of learning paths — culminating or specialized concepts.
- Total Terminal Nodes: 81 (40.5% of all concepts)
- Healthy Range: 5-40% of total concepts
Concepts at the end of learning paths:
- 17: DataFrame Type Guards
- 19: Lazy Import System
- 21: BaseFactoryMixin
- 30: Fluent Expression Chain
- 35: List Namespace
- 36: Name Namespace
- 39: coalesce Function
- 40: greatest Function
- 41: least Function
- 42: native Function
- 43: Comparison Operations
- 44: Arithmetic Operations
- 45: Boolean Operations
- 46: String Operations
- 52: duration Function
- 53: count_records Function
- 54: corr Function
- 56: ScalarFunctionNode
- 57: FieldReferenceNode
- 58: LiteralNode
...and 61 more
Orphaned Nodes Analysis¶
Orphaned nodes are completely disconnected concepts with no inbound AND no outbound edges. These indicate a quality problem — every concept should connect to the graph.
- Total Orphaned Nodes: 0
✅ No orphaned nodes detected. All concepts are connected to the graph.
Connected Components¶
- Number of Connected Components: 1
✅ All concepts are connected in a single graph.
Indegree Analysis¶
Top 10 concepts that are prerequisites for the most other concepts:
| Rank | Concept ID | Concept Label | Indegree |
|---|---|---|---|
| 1 | 1 | Python Type Hints | 19 |
| 2 | 28 | BaseExpressionAPI | 18 |
| 3 | 96 | Relation Class | 17 |
| 4 | 115 | RelationNode Base | 15 |
| 5 | 4 | DataFrames | 10 |
| 6 | 2 | Protocol Classes | 9 |
| 7 | 55 | ExpressionNode Base | 9 |
| 8 | 169 | RelationDAG | 9 |
| 9 | 3 | Pydantic Models | 8 |
| 10 | 27 | Expression Building | 8 |
Outdegree Distribution¶
| Dependencies | Number of Concepts |
|---|---|
| 0 | 7 |
| 1 | 38 |
| 2 | 128 |
| 3 | 21 |
| 4 | 4 |
| 5 | 2 |
Recommendations¶
- ℹ️ High terminal node percentage (40.5%): Consider if some terminal concepts should be prerequisites for advanced concepts
- ✅ DAG structure verified: Graph supports valid learning progressions
Report generated by learning-graph-reports/analyze_graph.py