From 718537272617e147648a827354a86bb54d490e2a Mon Sep 17 00:00:00 2001 From: elvis Date: Wed, 17 Dec 2025 18:03:01 +0100 Subject: [PATCH] convert to single products --- rsprocess/src/system.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/rsprocess/src/system.rs b/rsprocess/src/system.rs index 5680d06..0436045 100644 --- a/rsprocess/src/system.rs +++ b/rsprocess/src/system.rs @@ -741,6 +741,30 @@ impl System { pub fn direct_get_context_elements(&self) -> Option { self.context_elements.lock().unwrap().clone() } + + + pub fn to_single_products(&self) -> Self { + let mut new_sys = Self::default(); + new_sys.precomputed_context_elements(self.direct_get_context_elements()); + new_sys.precomputed_product_elements(self.direct_get_product_elements()); + + new_sys.delta = Arc::clone(&self.delta); + new_sys.available_entities = self.available_entities.clone(); + new_sys.context_process = self.context_process.clone(); + new_sys.reaction_rules = { + let mut new_reactions = vec![]; + for r in self.reaction_rules.iter() { + for el in r.products.iter() { + new_reactions.push(Reaction::from(r.reactants.clone(), + r.inhibitors.clone(), + [*el].into())) + } + } + Arc::new(new_reactions) + }; + + new_sys + } } // -----------------------------------------------------------------------------