@@ -13,13 +13,14 @@ def __init__(self, pdfconfig):
1313 self .config = pdfconfig
1414 self .required_parsets = {}
1515 self .builder_data = {'local' : {},'global' : {'symbols' : set ()}}
16+ self .encountered_expressions = {}
1617
1718 def collect (self , thismod , nom ):
1819 maskval = True if thismod else False
1920 mask = [maskval ] * len (nom )
2021 return {'mask' : mask }
2122
22- def require_synbols_as_scalars (self , symbols ):
23+ def require_symbols_as_scalars (self , symbols ):
2324 param_spec = {
2425 p :
2526 [{
@@ -52,15 +53,16 @@ def append(self, key, channel, sample, thismod, defined_samp):
5253 parsed = parser .parse_expr (formula )
5354 free_symbols = parsed .free_symbols
5455 for x in free_symbols :
55- self .builder_data ['global' ].setdefault ('symbols' ,set ()).add (x )
56+ if x not in self .encountered_expressions :
57+ self .builder_data ['global' ].setdefault ('symbols' ,set ()).add (x )
5658 else :
5759 parsed = None
5860 self .builder_data ['local' ].setdefault (key ,{}).setdefault (sample ,{}).setdefault ('channels' ,{}).setdefault (channel ,{})['parsed' ] = parsed
5961
6062 def finalize (self ):
6163 list_of_symbols = [str (x ) for x in self .builder_data ['global' ]['symbols' ]]
6264
63- self .required_parsets = self .require_synbols_as_scalars (list_of_symbols )
65+ self .required_parsets = self .require_symbols_as_scalars (list_of_symbols )
6466
6567 self .builder_data ['global' ]['symbol_names' ] = list_of_symbols
6668 for modname , modspec in self .builder_data ['local' ].items ():
0 commit comments