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";
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))),