@@ -1021,6 +1021,57 @@ def cols_allclose(col1, col2):
10211021 result , pd .DataFrame ({"allclose" : [True , True , True ]}, index = pd .Index ([0 , 1 , 2 ], name = "idx" ))
10221022 )
10231023
1024+ def test_reduce_infer_nesting ():
1025+ """Test that nesting inference works in reduce"""
1026+
1027+ ndf = generate_data (3 ,20 , seed = 1 )
1028+
1029+ # Test simple case
1030+ def complex_output (flux ):
1031+ return {"max_flux" :np .max (flux ), "lc.flux_quantiles" :np .quantile (flux , [0.1 ,0.2 ,0.3 ,0.4 ,0.5 ])}
1032+
1033+ result = ndf .reduce (complex_output , "nested.flux" )
1034+ assert list (result .columns ) == ["max_flux" , "lc" ]
1035+ assert list (result .lc .nest .fields ) == ['flux_quantiles' ]
1036+
1037+ # Test multi-column nested output
1038+ def complex_output (flux ):
1039+ return {"max_flux" :np .max (flux ),
1040+ "lc.flux_quantiles" :np .quantile (flux , [0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]),
1041+ "lc.labels" :[0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]}
1042+
1043+ result = ndf .reduce (complex_output , "nested.flux" )
1044+ assert list (result .columns ) == ["max_flux" , "lc" ]
1045+ assert list (result .lc .nest .fields ) == ['flux_quantiles' , "labels" ]
1046+
1047+ # Test integer names
1048+ def complex_output (flux ):
1049+ return np .max (flux ), np .quantile (flux , [0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]),[0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]
1050+
1051+ result = ndf .reduce (complex_output , "nested.flux" )
1052+ assert list (result .columns ) == [0 , 1 , 2 ]
1053+
1054+ # Test multiple nested structure output
1055+ def complex_output (flux ):
1056+ return {"max_flux" :np .max (flux ),
1057+ "lc.flux_quantiles" :np .quantile (flux , [0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]),
1058+ "lc.labels" :[0.1 ,0.2 ,0.3 ,0.4 ,0.5 ],
1059+ "meta.colors" :["green" , "red" , "blue" ]}
1060+
1061+ result = ndf .reduce (complex_output , "nested.flux" )
1062+ assert list (result .columns ) == ["max_flux" , "lc" , "meta" ]
1063+ assert list (result .lc .nest .fields ) == ["flux_quantiles" , "labels" ]
1064+ assert list (result .lc .meta .fields ) == ["colors" ]
1065+
1066+ # Test only nested structure output
1067+ def complex_output (flux ):
1068+ return {"lc.flux_quantiles" :np .quantile (flux , [0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]),
1069+ "lc.labels" :[0.1 ,0.2 ,0.3 ,0.4 ,0.5 ]}
1070+
1071+ result = ndf .reduce (complex_output , "nested.flux" )
1072+ assert list (result .columns ) == ["lc" ]
1073+ assert list (result .lc .nest .fields ) == ["flux_quantiles" , "labels" ]
1074+
10241075
10251076def test_scientific_notation ():
10261077 """
0 commit comments