@@ -306,13 +306,13 @@ def latex_form(self):
306306
307307 def contains_deriv (self , variable = None ):
308308 if variable is None :
309- return any ([factor .is_deriv and factor .deriv_code != [None ,] and
309+ return sum ([factor .is_deriv and factor .deriv_code != [None ,] and
310310 factor .evaluator ._evaluator == simple_function_evaluator
311- for factor in self .structure ])
311+ for factor in self .structure ]) == 1
312312 else :
313- return any ([factor .variable == variable and factor .deriv_code != [None ,] and
313+ return sum ([factor .variable == variable and factor . is_deriv and factor .deriv_code != [None ,] and
314314 factor .evaluator ._evaluator == simple_function_evaluator
315- for factor in self .structure ])
315+ for factor in self .structure ]) == 1
316316
317317 def contains_variable (self , variable ):
318318 return any ([factor .variable == variable for factor in self .structure ])
@@ -369,7 +369,13 @@ def described_variables(self):
369369 def described_variables_full (self ):
370370 described = set ()
371371 for factor in self .structure :
372- described .add (factor .cache_label )
372+ if factor .ftype == 'trigonometric' :
373+ label = (factor .cache_label [0 ], tuple (
374+ factor .cache_label [1 ][i ] for i , param in factor .params_description .items () if
375+ param ['name' ] != 'freq' ))
376+ described .add (label )
377+ else :
378+ described .add (factor .cache_label )
373379 described = frozenset (described )
374380 return described
375381
@@ -443,16 +449,18 @@ def __init__(self, pool: TFPool, basic_structure: Union[list, tuple, set], var_t
443449
444450 force_var_to_explain = True # False
445451 for i in range (len (basic_structure ), int (self .metaparameters ['terms_number' ]['value' ])):
446- check_test = 0
447- while True :
448- check_test += 1
449- mf = var_to_explain if force_var_to_explain else None
450- new_term = Term (self .pool , max_factors_in_term = self .metaparameters ['max_factors_in_term' ]['value' ],
451- mandatory_family = mf , passed_term = None )
452+ new_term = Term (self .pool , max_factors_in_term = self .metaparameters ['max_factors_in_term' ]['value' ],
453+ mandatory_family = None , passed_term = None )
454+ while new_term .described_variables_full in self .described_variables_full :
455+ new_term .randomize ()
456+ new_term .reset_saved_state ()
457+ # check_test += 1
458+ #
459+
452460
453- if new_term .described_variables_full not in self .described_variables_full :
454- force_var_to_explain = False
455- break
461+ # if new_term.described_variables_extra not in self.described_variables_full:
462+ # force_var_to_explain = False
463+ # break
456464
457465 self .structure .append (new_term )
458466
@@ -462,6 +470,7 @@ def __init__(self, pool: TFPool, basic_structure: Union[list, tuple, set], var_t
462470
463471 def randomize (self ):
464472 self .__init__ (self .pool , [], self .main_var_to_explain , metaparameters = self .metaparameters )
473+ self .reset_saved_state ()
465474
466475 def manual_reconst (self , attribute :str , value , except_attrs :dict ):
467476 from epde .loader import attrs_from_dict , get_typespec_attrs
@@ -562,7 +571,7 @@ def reconstruct_by_right_part(self, right_part_idx):
562571 return new_eq
563572
564573 def evaluate (self , normalize = True , return_val = False , grids = None ):
565- target = self .structure [self .target_idx ].evaluate (normalize , grids = grids )
574+ target = self .structure [self .target_idx ].evaluate (False , grids = grids )
566575
567576 # Place for improvent: introduce shifted_idx where necessary
568577 def shifted_idx (idx ):
@@ -580,9 +589,9 @@ def shifted_idx(idx):
580589 feature_indexes = [idx for idx in range (len (self .structure ))
581590 if self .weights_internal [shifted_idx (idx )] != 0 and idx != self .target_idx ]
582591 if len (feature_indexes ) > 0 :
583- features = self .structure [feature_indexes [0 ]].evaluate (normalize , grids = grids )
592+ features = self .structure [feature_indexes [0 ]].evaluate (False , grids = grids )
584593 for feat_idx in range (1 , len (feature_indexes )):
585- temp = self .structure [feature_indexes [feat_idx ]].evaluate (normalize , grids = grids )
594+ temp = self .structure [feature_indexes [feat_idx ]].evaluate (False , grids = grids )
586595 features = np .vstack ([features , temp ])
587596 if features .ndim == 1 :
588597 features = np .expand_dims (features , 1 ).T
0 commit comments