From e049a804b8e3f41510414494a9c99c2d6aafd838 Mon Sep 17 00:00:00 2001 From: seppinho Date: Fri, 8 Sep 2023 15:51:27 +0200 Subject: [PATCH 1/2] Ignore unparsable values --- .../utils/commands/csv/CsvFilterCommand.java | 46 +++++++++++-------- .../commands/csv/CsvFilterCommandTest.java | 2 +- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/main/java/genepi/genomic/utils/commands/csv/CsvFilterCommand.java b/src/main/java/genepi/genomic/utils/commands/csv/CsvFilterCommand.java index b7d22d7..f5a8103 100644 --- a/src/main/java/genepi/genomic/utils/commands/csv/CsvFilterCommand.java +++ b/src/main/java/genepi/genomic/utils/commands/csv/CsvFilterCommand.java @@ -20,13 +20,13 @@ public class CsvFilterCommand implements Callable { @Option(names = "--output", description = "Output file ", required = true) private String output; - + @Option(names = "--filter-column", description = "Column name to apply filter", required = true) private String filterColumn = ""; - + @Option(names = "--ignore-values", description = "Values to ignore from the filter column", required = false) private String ignoreValues = ""; - + @Option(names = "--limit", description = "Specifiy upper limit to filter", required = true) private double limit; @@ -35,7 +35,7 @@ public class CsvFilterCommand implements Callable { @Option(names = "--output-sep", description = "Separator of output file. default: ,", required = false, showDefaultValue = Visibility.ALWAYS) private char outputSeparator = ','; - + @Option(names = { "--gz" }, description = "Write file as gzip", required = false) private boolean outputGzip = false; @@ -49,27 +49,27 @@ public void setInput(String input) { public void setOutput(String output) { this.output = output; } - + public void setGzip(boolean outputGzip) { this.outputGzip = outputGzip; } - + public void setSeparator(char sep) { this.separator = sep; } - + public void setOutputSeparator(char outputSep) { this.outputSeparator = outputSep; } - + public void setLimit(int limit) { this.limit = limit; } - + public void setFilterColumn(String filterColumn) { this.filterColumn = filterColumn; } - + public void setIgnoreValues(String ignoreValues) { this.ignoreValues = ignoreValues; } @@ -78,7 +78,7 @@ public Integer call() throws Exception { assert (input != null); assert (output != null); - + ITableWriter writer = null; if (outputGzip) { writer = new GzipCsvTableWriter(output, outputSeparator, outputQuote); @@ -86,25 +86,31 @@ public Integer call() throws Exception { writer = new CsvTableWriter(output, outputSeparator, outputQuote); } - List ignoreList = Arrays.asList(ignoreValues.split(",")); - + List ignoreList = Arrays.asList(ignoreValues.split(",")); + CsvTableReader reader = new CsvTableReader(input, separator); writer.setColumns(reader.getColumns()); - - if(!reader.hasColumn(filterColumn)) { + + if (!reader.hasColumn(filterColumn)) { System.err.println("Column " + filterColumn + "not found."); return 1; } + int line = 0; while (reader.next()) { - + line++; String value = reader.getString(filterColumn); - if (ignoreList.contains(value) || Double.valueOf(value) < limit) { - continue; + try { + + if (ignoreList.contains(value) || Double.valueOf(value) < limit) { + continue; + } + writer.setRow(reader.getRow()); + writer.next(); + } catch (NumberFormatException e) { + System.out.println("Ignoring line " + line + ". Value '" + value + "' cannot be parsed."); } - writer.setRow(reader.getRow()); - writer.next(); } reader.close(); diff --git a/src/test/java/genepi/genomic/utils/commands/csv/CsvFilterCommandTest.java b/src/test/java/genepi/genomic/utils/commands/csv/CsvFilterCommandTest.java index 77fe61d..ce512ea 100644 --- a/src/test/java/genepi/genomic/utils/commands/csv/CsvFilterCommandTest.java +++ b/src/test/java/genepi/genomic/utils/commands/csv/CsvFilterCommandTest.java @@ -24,7 +24,7 @@ public void testGzFilteringWithNAValues() throws Exception { command.setLimit(2); command.setGzip(true); command.setFilterColumn("LOG10P"); - command.setIgnoreValues("NA"); + //command.setIgnoreValues("NA"); assertEquals(0, (int) command.call()); assertEquals(FileUtil.readFileAsString(new GzipCompressorInputStream(new FileInputStream(output))), From e01eb975f1f006ab5105c789d9e185ebde99d1f7 Mon Sep 17 00:00:00 2001 From: seppinho Date: Fri, 8 Sep 2023 15:52:18 +0200 Subject: [PATCH 2/2] Prepare release v0.3.7 --- pom.xml | 2 +- src/main/java/genepi/genomic/utils/App.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ee1cd42..544fea4 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ genepi genomic-utils - 0.3.6 + 0.3.7 jar genomic-utils diff --git a/src/main/java/genepi/genomic/utils/App.java b/src/main/java/genepi/genomic/utils/App.java index 4d4488e..99c598d 100644 --- a/src/main/java/genepi/genomic/utils/App.java +++ b/src/main/java/genepi/genomic/utils/App.java @@ -24,7 +24,7 @@ public class App { public static final String APP = "genomic-utils"; - public static final String VERSION = "0.3.6"; + public static final String VERSION = "0.3.7"; public static final String URL = "https://github.com/genepi/genomic-utils";