From 0b11d8dc8353a5d97c16c34a37870259a08c1acc Mon Sep 17 00:00:00 2001
From: Roel <roel.vanesch@wur.nl>
Date: Fri, 9 Dec 2022 15:07:52 +0100
Subject: [PATCH] Group.RelaxationSettings is now a required argument. Defaults
 for relaxation sub-parameters are now in line with relaxation 4.

---
 .../java/nl/wur/bif/pantools/cli/Group.java   | 22 +++++++++++--------
 ...antools.properties => Defaults.properties} |  9 ++++----
 src/main/resources/MessageBundle.properties   |  2 +-
 3 files changed, 18 insertions(+), 15 deletions(-)
 rename src/main/resources/{.Pantools.properties => Defaults.properties} (87%)

diff --git a/src/main/java/nl/wur/bif/pantools/cli/Group.java b/src/main/java/nl/wur/bif/pantools/cli/Group.java
index fecbdf62b..393dbc646 100644
--- a/src/main/java/nl/wur/bif/pantools/cli/Group.java
+++ b/src/main/java/nl/wur/bif/pantools/cli/Group.java
@@ -1,18 +1,22 @@
 package nl.wur.bif.pantools.cli;
 
+import jakarta.validation.constraints.DecimalMax;
+import jakarta.validation.constraints.DecimalMin;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
 import nl.wur.bif.pantools.cli.mixins.SelectGenomes;
 import nl.wur.bif.pantools.cli.mixins.ThreadNumber;
+import nl.wur.bif.pantools.cli.validation.BeanValidation;
 import nl.wur.bif.pantools.pantools.Pantools;
 
-import jakarta.validation.constraints.*;
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
 
+import static nl.wur.bif.pantools.cli.validation.Constraints.GraphDatabase;
+import static nl.wur.bif.pantools.cli.validation.Constraints.InputFile;
 import static nl.wur.bif.pantools.utils.Globals.*;
-import nl.wur.bif.pantools.cli.validation.BeanValidation;
-import static nl.wur.bif.pantools.cli.validation.Constraints.*;
 import static picocli.CommandLine.*;
-import static picocli.CommandLine.Model.*;
+import static picocli.CommandLine.Model.CommandSpec;
 
 /**
  * Generate homology groups based on similarity of protein sequences.
@@ -39,21 +43,21 @@ public class Group implements Callable<Integer> {
 
     @DecimalMin(value = "0.001", message = "{range.ir}")
     @DecimalMax(value = "0.1", message = "{range.ir")
-    static double intersectionRate = 0.08;
+    static double intersectionRate = 0.05;
 
     @Min(value = 1, message = "{min.st}")
     @Max(value = 99, message = "{max.st}")
-    static int similarityThreshold = 95;
+    static int similarityThreshold = 65;
 
     @Min(value = 1, message = "{min.mcl-i}")
     @Max(value = 99, message = "{max.mcl-i}")
-    static double mclInflation = 10.8;
+    static double mclInflation = 7.2;
 
     @DecimalMin(value = "0", message = "{min.contrast}")
     @DecimalMax(value = "10", message = "{max.contrast}")
-    static double contrast = 8;
+    static double contrast = 5;
 
-    @ArgGroup RelaxationSettings relaxationSettings;
+    @ArgGroup(multiplicity = "1") RelaxationSettings relaxationSettings;
     private static class RelaxationSettings {
         @Option(names = {"--relaxation"})
         void setParams(int value) {
diff --git a/src/main/resources/.Pantools.properties b/src/main/resources/Defaults.properties
similarity index 87%
rename from src/main/resources/.Pantools.properties
rename to src/main/resources/Defaults.properties
index 98b47a402..7399c2833 100644
--- a/src/main/resources/.Pantools.properties
+++ b/src/main/resources/Defaults.properties
@@ -19,11 +19,10 @@ pantools.create_tree_template.color = 2
 # GoEnrichment
 pantools.go_enrichment.fdr = 5
 # Group
-pantools.group.intersection-rate = 0.08
-pantools.group.similarity-threshold = 95
-pantools.group.mcl-inflation = 10.8
-pantools.group.contrast = 8
-pantools.group.threads = 0
+pantools.group.intersection-rate = 0.05
+pantools.group.similarity-threshold = 65
+pantools.group.mcl-inflation = 7.2
+pantools.group.contrast = 5
 # LocateGenes
 pantools.locate_genes.core-threshold = 0
 pantools.locate_genes.gap-open = 0
diff --git a/src/main/resources/MessageBundle.properties b/src/main/resources/MessageBundle.properties
index c169a4bd0..b092e139f 100644
--- a/src/main/resources/MessageBundle.properties
+++ b/src/main/resources/MessageBundle.properties
@@ -249,7 +249,7 @@ pantools.group.intersection-rate = The fraction of k-mers that needs to be share
   be in range [0.001,0.1] (default: ${DEFAULT-VALUE}).
 pantools.group.mcl-inflation = The MCL inflation. Should be in range [1,19] (default: ${DEFAULT-VALUE}).
 pantools.group.relaxation = The relaxation in homology calls. Should be in range [1..8], from strict to relaxed. \
-  (default: 1).
+  Use optimal_grouping to determine the best relaxation setting.
 # GroupInfo
 pantools.group_info.functions = Name of function identifiers from GO, PFAM, InterPro or TIGRAM.
 pantools.group_info.node = Retrieve the nucleotide nodes belonging to genes in homology groups
-- 
GitLab