3434
3535# Statistic type identifiers from the C++ code.
3636STAT_TYPE_MEAN_ABSOLUTE_DIFF = 0
37- STAT_TYPE_RMS_DIFF = 1
37+ STAT_TYPE_ROOT_MEAN_SQUARE_DIFF = 1
3838STAT_TYPE_POPULATION_STD_DEV = 2
3939STAT_TYPE_PEAK_TO_PEAK_DIFF = 3
4040STAT_TYPE_SIGNAL_TO_NOISE_RATIO = 4
4343STAT_TYPE_MEDIAN_DIFF = 7
4444STAT_TYPE_MEAN_ABSOLUTE_ERROR = 8
4545STAT_TYPE_ROOT_MEAN_SQUARE_ERROR = 9
46- STAT_TYPE_NORMALIZED_RMSE = 10
46+ STAT_TYPE_NORMALIZED_ROOT_MEAN_SQUARE_ERROR = 10
4747STAT_TYPE_R_SQUARED = 11
4848
4949
5050# Names for each statistic identifier defined in this module.
51- STAT_NAME_MEAN_ABS_DIFF = "mean_absolute_diff"
52- STAT_NAME_RMS_DIFF = "root_mean_square_diff"
53- STAT_NAME_STD_POPULATION_DEV = "population_std_dev"
54- STAT_NAME_POPULATION_VARIANCE = "population_variance"
55- STAT_NAME_PEAK_TO_PEAK_DIFF = "peak_to_peak_diff"
56- STAT_NAME_SIGNAL_TO_NOISE_RATIO = "signal_to_noise_ratio"
51+ STAT_NAME_MEAN_ABSOLUTE_DIFF = "mean_absolute_diff"
52+ STAT_NAME_MEAN_ABSOLUTE_ERROR = "mean_absolute_error"
5753STAT_NAME_MEAN_DIFF = "mean_diff"
5854STAT_NAME_MEDIAN_DIFF = "median_diff"
59- STAT_NAME_MEAN_ABSOLUTE_ERROR = "mean_absolute_error"
55+ STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR = "normalized_root_mean_square_error"
56+ STAT_NAME_PEAK_TO_PEAK_DIFF = "peak_to_peak_diff"
57+ STAT_NAME_POPULATION_STD_DEV = "population_std_dev"
58+ STAT_NAME_POPULATION_VARIANCE = "population_variance"
59+ STAT_NAME_ROOT_MEAN_SQUARE_DIFF = "root_mean_square_diff"
6060STAT_NAME_ROOT_MEAN_SQUARE_ERROR = "root_mean_square_error"
61- STAT_NAME_NORMALIZED_RMSE = "normalized_rmse"
6261STAT_NAME_R_SQUARED = "r_squared"
62+ STAT_NAME_SIGNAL_TO_NOISE_RATIO = "signal_to_noise_ratio"
6363
6464STAT_NAME_LIST = [
65- STAT_NAME_MEAN_ABS_DIFF ,
66- STAT_NAME_RMS_DIFF ,
67- STAT_NAME_STD_POPULATION_DEV ,
68- STAT_NAME_POPULATION_VARIANCE ,
69- STAT_NAME_PEAK_TO_PEAK_DIFF ,
70- STAT_NAME_SIGNAL_TO_NOISE_RATIO ,
65+ STAT_NAME_MEAN_ABSOLUTE_DIFF ,
66+ STAT_NAME_MEAN_ABSOLUTE_ERROR ,
7167 STAT_NAME_MEAN_DIFF ,
7268 STAT_NAME_MEDIAN_DIFF ,
73- STAT_NAME_MEAN_ABSOLUTE_ERROR ,
69+ STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR ,
70+ STAT_NAME_PEAK_TO_PEAK_DIFF ,
71+ STAT_NAME_POPULATION_STD_DEV ,
72+ STAT_NAME_POPULATION_VARIANCE ,
73+ STAT_NAME_ROOT_MEAN_SQUARE_DIFF ,
7474 STAT_NAME_ROOT_MEAN_SQUARE_ERROR ,
75- STAT_NAME_NORMALIZED_RMSE ,
7675 STAT_NAME_R_SQUARED ,
76+ STAT_NAME_SIGNAL_TO_NOISE_RATIO ,
7777]
7878
7979
@@ -90,11 +90,11 @@ def _parse_diff_statistics_result(self, result):
9090 stat_value = result [i + 1 ]
9191
9292 if stat_type == STAT_TYPE_MEAN_ABSOLUTE_DIFF :
93- stats [STAT_NAME_MEAN_ABS_DIFF ] = stat_value
94- elif stat_type == STAT_TYPE_RMS_DIFF :
95- stats [STAT_NAME_RMS_DIFF ] = stat_value
93+ stats [STAT_NAME_MEAN_ABSOLUTE_DIFF ] = stat_value
94+ elif stat_type == STAT_TYPE_ROOT_MEAN_SQUARE_DIFF :
95+ stats [STAT_NAME_ROOT_MEAN_SQUARE_DIFF ] = stat_value
9696 elif stat_type == STAT_TYPE_POPULATION_STD_DEV :
97- stats [STAT_NAME_STD_POPULATION_DEV ] = stat_value
97+ stats [STAT_NAME_POPULATION_STD_DEV ] = stat_value
9898 elif stat_type == STAT_TYPE_PEAK_TO_PEAK_DIFF :
9999 stats [STAT_NAME_PEAK_TO_PEAK_DIFF ] = stat_value
100100 elif stat_type == STAT_TYPE_SIGNAL_TO_NOISE_RATIO :
@@ -109,8 +109,8 @@ def _parse_diff_statistics_result(self, result):
109109 stats [STAT_NAME_MEAN_ABSOLUTE_ERROR ] = stat_value
110110 elif stat_type == STAT_TYPE_ROOT_MEAN_SQUARE_ERROR :
111111 stats [STAT_NAME_ROOT_MEAN_SQUARE_ERROR ] = stat_value
112- elif stat_type == STAT_TYPE_NORMALIZED_RMSE :
113- stats [STAT_NAME_NORMALIZED_RMSE ] = stat_value
112+ elif stat_type == STAT_TYPE_NORMALIZED_ROOT_MEAN_SQUARE_ERROR :
113+ stats [STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR ] = stat_value
114114 elif stat_type == STAT_TYPE_R_SQUARED :
115115 stats [STAT_NAME_R_SQUARED ] = stat_value
116116
@@ -166,14 +166,14 @@ def test_diff_statistics_basic(self):
166166 # Standard deviation should be sqrt(variance).
167167 expected_std = math .sqrt (stats [STAT_NAME_POPULATION_VARIANCE ])
168168 self .assertAlmostEqual (
169- stats [STAT_NAME_STD_POPULATION_DEV ], expected_std , places = 5
169+ stats [STAT_NAME_POPULATION_STD_DEV ], expected_std , places = 5
170170 )
171171
172172 # Mean absolute diff should be >= 0.
173- self .assertGreaterEqual (stats [STAT_NAME_MEAN_ABS_DIFF ], 0.0 )
173+ self .assertGreaterEqual (stats [STAT_NAME_MEAN_ABSOLUTE_DIFF ], 0.0 )
174174
175175 # RMS should be >= 0.
176- self .assertGreaterEqual (stats [STAT_NAME_RMS_DIFF ], 0.0 )
176+ self .assertGreaterEqual (stats [STAT_NAME_ROOT_MEAN_SQUARE_DIFF ], 0.0 )
177177
178178 # Peak-to-peak should be >= 0.
179179 self .assertGreaterEqual (stats [STAT_NAME_PEAK_TO_PEAK_DIFF ], 0.0 )
@@ -185,7 +185,7 @@ def test_diff_statistics_basic(self):
185185 self .assertGreaterEqual (stats [STAT_NAME_ROOT_MEAN_SQUARE_ERROR ], 0.0 )
186186
187187 # NRMSE should be >= 0.
188- self .assertGreaterEqual (stats [STAT_NAME_NORMALIZED_RMSE ], 0.0 )
188+ self .assertGreaterEqual (stats [STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR ], 0.0 )
189189
190190 # R-squared should be between -infinity and 1.
191191 self .assertLessEqual (stats [STAT_NAME_R_SQUARED ], 1.0 )
@@ -230,16 +230,16 @@ def test_diff_statistics_identical_curves(self):
230230
231231 # For identical curves, all differences should be zero.
232232 for stat_name in [
233- STAT_NAME_MEAN_ABS_DIFF ,
234- STAT_NAME_RMS_DIFF ,
235- STAT_NAME_STD_POPULATION_DEV ,
233+ STAT_NAME_MEAN_ABSOLUTE_DIFF ,
234+ STAT_NAME_ROOT_MEAN_SQUARE_DIFF ,
235+ STAT_NAME_POPULATION_STD_DEV ,
236236 STAT_NAME_POPULATION_VARIANCE ,
237237 STAT_NAME_PEAK_TO_PEAK_DIFF ,
238238 STAT_NAME_MEAN_DIFF ,
239239 STAT_NAME_MEDIAN_DIFF ,
240240 STAT_NAME_MEAN_ABSOLUTE_ERROR ,
241241 STAT_NAME_ROOT_MEAN_SQUARE_ERROR ,
242- STAT_NAME_NORMALIZED_RMSE ,
242+ STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR ,
243243 ]:
244244 self .assertAlmostEqual (stats [stat_name ], 0.0 , places = 5 )
245245
@@ -286,7 +286,9 @@ def test_diff_statistics_constant_offset(self):
286286 # - Mean diff should equal the offset.
287287 self .assertAlmostEqual (stats [STAT_NAME_MEAN_DIFF ], - offset , places = 5 )
288288 # - Mean absolute diff should equal abs(offset).
289- self .assertAlmostEqual (stats [STAT_NAME_MEAN_ABS_DIFF ], abs (offset ), places = 5 )
289+ self .assertAlmostEqual (
290+ stats [STAT_NAME_MEAN_ABSOLUTE_DIFF ], abs (offset ), places = 5
291+ )
290292 # - Median diff should equal the offset.
291293 self .assertAlmostEqual (stats [STAT_NAME_MEDIAN_DIFF ], - offset , places = 5 )
292294 # - Variance should be 0 (no variation in differences).
@@ -339,8 +341,8 @@ def test_diff_statistics_frame_range(self):
339341
340342 # Statistics should be different for different ranges.
341343 self .assertNotAlmostEqual (
342- stats_full [STAT_NAME_MEAN_ABS_DIFF ],
343- stats_partial [STAT_NAME_MEAN_ABS_DIFF ],
344+ stats_full [STAT_NAME_MEAN_ABSOLUTE_DIFF ],
345+ stats_partial [STAT_NAME_MEAN_ABSOLUTE_DIFF ],
344346 places = 2 ,
345347 )
346348 self .assertNotAlmostEqual (
@@ -387,8 +389,8 @@ def test_diff_statistics_noise_detection(self):
387389 stats = self ._parse_diff_statistics_result (result )
388390
389391 # Verify noise is detected.
390- self .assertGreater (stats [STAT_NAME_STD_POPULATION_DEV ], 0.1 )
391- self .assertGreater (stats [STAT_NAME_RMS_DIFF ], 0.1 )
392+ self .assertGreater (stats [STAT_NAME_POPULATION_STD_DEV ], 0.1 )
393+ self .assertGreater (stats [STAT_NAME_ROOT_MEAN_SQUARE_DIFF ], 0.1 )
392394 self .assertGreater (stats [STAT_NAME_MEAN_ABSOLUTE_ERROR ], 0.1 )
393395 self .assertGreater (stats [STAT_NAME_ROOT_MEAN_SQUARE_ERROR ], 0.1 )
394396 # Mean difference should be close to zero for random noise.
@@ -503,15 +505,15 @@ def test_diff_statistics_single_flag(self):
503505 )
504506 parsed = self ._parse_diff_statistics_result (result )
505507 self .assertEqual (len (parsed ), 1 )
506- self .assertIn (STAT_NAME_MEAN_ABS_DIFF , parsed )
508+ self .assertIn (STAT_NAME_MEAN_ABSOLUTE_DIFF , parsed )
507509
508510 # Test RMS only.
509511 result = maya .cmds .mmAnimCurveDiffStatistics (
510512 animCurve_tx , animCurve_ty , rootMeanSquareDifference = True
511513 )
512514 parsed = self ._parse_diff_statistics_result (result )
513515 self .assertEqual (len (parsed ), 1 )
514- self .assertIn (STAT_NAME_RMS_DIFF , parsed )
516+ self .assertIn (STAT_NAME_ROOT_MEAN_SQUARE_DIFF , parsed )
515517
516518 # Test median difference only.
517519 result = maya .cmds .mmAnimCurveDiffStatistics (
@@ -543,7 +545,7 @@ def test_diff_statistics_single_flag(self):
543545 )
544546 parsed = self ._parse_diff_statistics_result (result )
545547 self .assertEqual (len (parsed ), 1 )
546- self .assertIn (STAT_NAME_NORMALIZED_RMSE , parsed )
548+ self .assertIn (STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR , parsed )
547549
548550 # Test R-squared only.
549551 result = maya .cmds .mmAnimCurveDiffStatistics (
@@ -585,12 +587,12 @@ def test_diff_statistics_combined_flags(self):
585587 parsed = self ._parse_diff_statistics_result (result )
586588 self .assertEqual (len (parsed ), 2 )
587589 self .assertIn (STAT_NAME_POPULATION_VARIANCE , parsed )
588- self .assertIn (STAT_NAME_STD_POPULATION_DEV , parsed )
590+ self .assertIn (STAT_NAME_POPULATION_STD_DEV , parsed )
589591
590592 # Verify stddev = sqrt(variance).
591593 expected_stddev = math .sqrt (parsed [STAT_NAME_POPULATION_VARIANCE ])
592594 self .assertAlmostEqual (
593- parsed [STAT_NAME_STD_POPULATION_DEV ], expected_stddev , places = 5
595+ parsed [STAT_NAME_POPULATION_STD_DEV ], expected_stddev , places = 5
594596 )
595597
596598 result = maya .cmds .mmAnimCurveDiffStatistics (
@@ -605,7 +607,7 @@ def test_diff_statistics_combined_flags(self):
605607 self .assertEqual (len (parsed ), 4 )
606608 self .assertIn (STAT_NAME_MEAN_ABSOLUTE_ERROR , parsed )
607609 self .assertIn (STAT_NAME_ROOT_MEAN_SQUARE_ERROR , parsed )
608- self .assertIn (STAT_NAME_NORMALIZED_RMSE , parsed )
610+ self .assertIn (STAT_NAME_NORMALIZED_ROOT_MEAN_SQUARE_ERROR , parsed )
609611 self .assertIn (STAT_NAME_R_SQUARED , parsed )
610612
611613 def test_diff_statistics_with_list_inputs (self ):
@@ -629,7 +631,7 @@ def test_diff_statistics_with_list_inputs(self):
629631
630632 # For constant offset of 5:
631633 self .assertAlmostEqual (stats [STAT_NAME_MEAN_DIFF ], - 5.0 , places = 5 )
632- self .assertAlmostEqual (stats [STAT_NAME_MEAN_ABS_DIFF ], 5.0 , places = 5 )
634+ self .assertAlmostEqual (stats [STAT_NAME_MEAN_ABSOLUTE_DIFF ], 5.0 , places = 5 )
633635 self .assertAlmostEqual (stats [STAT_NAME_POPULATION_VARIANCE ], 0.0 , places = 5 )
634636 self .assertAlmostEqual (stats [STAT_NAME_MEAN_ABSOLUTE_ERROR ], 5.0 , places = 5 )
635637 self .assertAlmostEqual (stats [STAT_NAME_ROOT_MEAN_SQUARE_ERROR ], 5.0 , places = 5 )
@@ -703,8 +705,8 @@ def test_diff_statistics_noise_with_lists(self):
703705 stats = self ._parse_diff_statistics_result (result )
704706
705707 # Verify noise is detected
706- self .assertGreater (stats [STAT_NAME_STD_POPULATION_DEV ], 0.1 )
707- self .assertGreater (stats [STAT_NAME_RMS_DIFF ], 0.1 )
708+ self .assertGreater (stats [STAT_NAME_POPULATION_STD_DEV ], 0.1 )
709+ self .assertGreater (stats [STAT_NAME_ROOT_MEAN_SQUARE_DIFF ], 0.1 )
708710 self .assertGreater (stats [STAT_NAME_MEAN_ABSOLUTE_ERROR ], 0.1 )
709711 self .assertGreater (stats [STAT_NAME_ROOT_MEAN_SQUARE_ERROR ], 0.1 )
710712 # Mean difference should be close to zero for random noise
0 commit comments