diff --git a/module/react_group.amlg b/module/react_group.amlg index 954c65a0e..f6b837af0 100644 --- a/module/react_group.amlg +++ b/module/react_group.amlg @@ -133,42 +133,46 @@ (declare (assoc react_results - ;don't run in parallel since SingleReactGroup creates and destroys entities - (map - (lambda (seq - ;update progress every 'progress_update_size' number of reacts - (if (= 0 (mod (current_index) progress_update_size)) - (if (< num_progress_updates max_progress_updates) - (seq - (accum (assoc num_progress_updates 1)) - (call !ProgressUpdate (assoc details "Reacting to a group of cases")) + ;ReactGroup can run in parallel only when working on existing cases. When using new cases, + ;it must instead run serially since it creates ephemeral entities for each new case. + (call (set_concurrency + (map + (lambda (seq + ;update progress every 'progress_update_size' number of reacts + (if (= 0 (mod (current_index) progress_update_size)) + (if (< num_progress_updates max_progress_updates) + (seq + (accum (assoc num_progress_updates 1)) + (call !ProgressUpdate (assoc details "Reacting to a group of cases")) + ) ) ) - ) - (call !SingleReactGroup (assoc - action_features action_features - group_id_features group_id_features - features features - details details - new_cases (get new_cases (current_index 1)) - condition (get conditions (current_index 1)) - case_indices (get case_indices (current_index 1)) - familiarity_conviction_addition familiarity_conviction_addition - familiarity_conviction_removal familiarity_conviction_removal - kl_divergence_addition kl_divergence_addition - kl_divergence_removal kl_divergence_removal - p_value_of_addition p_value_of_addition - p_value_of_removal p_value_of_removal - distance_contributions distance_contributions - residual_contributions residual_contributions - similarity_conviction similarity_conviction - weight_feature weight_feature - use_case_weights use_case_weights + (call !SingleReactGroup (assoc + action_features action_features + group_id_features group_id_features + features features + details details + new_cases (get new_cases (current_index 1)) + condition (get conditions (current_index 1)) + case_indices (get case_indices (current_index 1)) + familiarity_conviction_addition familiarity_conviction_addition + familiarity_conviction_removal familiarity_conviction_removal + kl_divergence_addition kl_divergence_addition + kl_divergence_removal kl_divergence_removal + p_value_of_addition p_value_of_addition + p_value_of_removal p_value_of_removal + distance_contributions distance_contributions + residual_contributions residual_contributions + similarity_conviction similarity_conviction + weight_feature weight_feature + use_case_weights use_case_weights + )) )) - )) - (or new_cases conditions case_indices) - ) + (or new_cases conditions case_indices) + ) + (= .null new_cases) + )) )) ;convert react_results to a dict of react key -> lists of values (one per group)