github-actions[bot] commited on
Commit
7cf4785
·
1 Parent(s): 7566ac3

Auto-sync from demo at Fri Dec 26 09:19:50 UTC 2025

Browse files
graphgen/models/evaluator/kg/structure_evaluator.py CHANGED
@@ -1,3 +1,4 @@
 
1
  from typing import Any, Dict, Optional
2
 
3
  import numpy as np
@@ -81,14 +82,22 @@ class StructureEvaluator:
81
  return None
82
 
83
  try:
84
- # Fit power law: log(y) = a * log(x) + b
85
- log_degrees = np.log(degrees)
86
- sorted_log_degrees = np.sort(log_degrees)
87
- x = np.arange(1, len(sorted_log_degrees) + 1)
88
- log_x = np.log(x)
 
 
 
 
 
 
 
 
89
 
90
  # Linear regression on log-log scale
91
- r_value, *_ = stats.linregress(log_x, sorted_log_degrees)
92
  r2 = r_value**2
93
 
94
  return float(r2)
 
1
+ from collections import Counter
2
  from typing import Any, Dict, Optional
3
 
4
  import numpy as np
 
82
  return None
83
 
84
  try:
85
+ degree_counts = Counter(degrees)
86
+ degree_values, frequencies = zip(*sorted(degree_counts.items()))
87
+
88
+ if len(degree_values) < 3:
89
+ logger.warning(
90
+ f"Insufficient unique degrees ({len(degree_values)}) for power law fitting. "
91
+ f"Graph may be too uniform."
92
+ )
93
+ return None
94
+
95
+ # Fit power law: log(frequency) = a * log(degree) + b
96
+ log_degrees = np.log(degree_values)
97
+ log_frequencies = np.log(frequencies)
98
 
99
  # Linear regression on log-log scale
100
+ r_value, *_ = stats.linregress(log_degrees, log_frequencies)
101
  r2 = r_value**2
102
 
103
  return float(r2)