From 1f3981c3f57b273206ba9984b35cfa9d5af1c4f6 Mon Sep 17 00:00:00 2001 From: Adam Reichold <adam.reichold@ufz.de> Date: Mon, 28 Mar 2022 10:19:08 +0200 Subject: [PATCH] Do not check for equivalence/reusability if matrices/pests are actually identical. --- multi-pathogen-sampling.R | 4 ++-- src/main.rs | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/multi-pathogen-sampling.R b/multi-pathogen-sampling.R index c1ca4a5..11fc350 100644 --- a/multi-pathogen-sampling.R +++ b/multi-pathogen-sampling.R @@ -77,7 +77,7 @@ matches <- function(requirement, action) { equivalent_matrices <- FALSE - if (action$pest == "Xanthomonas citri" || action$pest == "Aleurocanthus citriperdus") { + if (!same_matrix && (action$pest == "Xanthomonas citri" || action$pest == "Aleurocanthus citriperdus")) { if (action$matrix_ == "shoots" || action$matrix_ == "fruits") { if (requirement$matrix_ == "shoots" || requirement$matrix_ == "fruits") { equivalent_matrices <- TRUE @@ -87,7 +87,7 @@ matches <- function(requirement, action) { reusable_sample <- FALSE - if (action$matrix_ == "shoots" || action$matrix_ == "fruits") { + if (!same_pest && (action$matrix_ == "shoots" || action$matrix_ == "fruits")) { if (action$pest == "Trioza erytreae" || action$pest == "Citrus leprosis") { if (requirement$pest == "Trioza erytreae" || requirement$pest == "Citrus leprosis") { reusable_sample <- TRUE diff --git a/src/main.rs b/src/main.rs index bcaafbf..7a43613 100644 --- a/src/main.rs +++ b/src/main.rs @@ -252,8 +252,8 @@ fn matches( let same_matrix = requirement.matrix == action.matrix; // Does the pest implied by the action have equivalent matrices matching the requirement? - let equivalent_matrices = - problem + let equivalent_matrices = !same_matrix + && problem .equivalent_matrices .iter() .any(|equivalent_matrices| { @@ -263,11 +263,12 @@ fn matches( }); // Is the matrix implied by the action resuable for sampling a pest matching the requirement? - let reusable_sample = problem.reusable_samples.iter().any(|reusable_sample| { - reusable_sample.matrix.contains(action.matrix.0) - && reusable_sample.pests.contains(action.pest.0) - && reusable_sample.pests.contains(requirement.pest.0) - }); + let reusable_sample = !same_pest + && problem.reusable_samples.iter().any(|reusable_sample| { + reusable_sample.matrix.contains(action.matrix.0) + && reusable_sample.pests.contains(action.pest.0) + && reusable_sample.pests.contains(requirement.pest.0) + }); let matches = (same_pest || reusable_sample) && (same_matrix || equivalent_matrices); -- GitLab