Merge branch 'master' of ssh://nickel.broadinstitute.org/humgen/gsa-scr1/gsa-engineering/git/unstable
This commit is contained in:
commit
62ee31afba
|
|
@ -177,11 +177,8 @@ public class GATKReport {
|
|||
*/
|
||||
public void print(PrintStream out) {
|
||||
out.println(GATKREPORT_HEADER_PREFIX + getVersion().toString() + SEPARATOR + getTables().size());
|
||||
for (GATKReportTable table : tables.values()) {
|
||||
if (table.getNumRows() > 0) {
|
||||
table.write(out);
|
||||
}
|
||||
}
|
||||
for (GATKReportTable table : tables.values())
|
||||
table.write(out);
|
||||
}
|
||||
|
||||
public Collection<GATKReportTable> getTables() {
|
||||
|
|
|
|||
|
|
@ -48,9 +48,9 @@ public enum GATKReportDataType {
|
|||
Boolean("%[Bb]"),
|
||||
|
||||
/**
|
||||
* Used for byte and char value. Will display as a char so use printable values!
|
||||
* Used for char values. Will display as a char so use printable values!
|
||||
*/
|
||||
Byte("%[Cc]"),
|
||||
Character("%[Cc]"),
|
||||
|
||||
/**
|
||||
* Used for float and double values. Will output a decimal with format %.8f unless otherwise specified.
|
||||
|
|
@ -58,7 +58,7 @@ public enum GATKReportDataType {
|
|||
Decimal("%.*[EeFf]"),
|
||||
|
||||
/**
|
||||
* Used for int, and long values. Will display the full number by default.
|
||||
* Used for int, byte, short, and long values. Will display the full number by default.
|
||||
*/
|
||||
Integer("%[Dd]"),
|
||||
|
||||
|
|
@ -97,17 +97,26 @@ public enum GATKReportDataType {
|
|||
GATKReportDataType value;
|
||||
if (object instanceof Boolean) {
|
||||
value = GATKReportDataType.Boolean;
|
||||
} else if (object instanceof Byte || object instanceof Character) {
|
||||
value = GATKReportDataType.Byte;
|
||||
} else if (object instanceof Float || object instanceof Double) {
|
||||
|
||||
} else if (object instanceof Character) {
|
||||
value = GATKReportDataType.Character;
|
||||
|
||||
} else if (object instanceof Float ||
|
||||
object instanceof Double) {
|
||||
value = GATKReportDataType.Decimal;
|
||||
} else if (object instanceof Integer || object instanceof Long) {
|
||||
|
||||
} else if (object instanceof Integer ||
|
||||
object instanceof Long ||
|
||||
object instanceof Short ||
|
||||
object instanceof Byte ) {
|
||||
value = GATKReportDataType.Integer;
|
||||
|
||||
} else if (object instanceof String) {
|
||||
value = GATKReportDataType.String;
|
||||
|
||||
} else {
|
||||
value = GATKReportDataType.Unknown;
|
||||
//throw new ReviewedStingException("GATKReport could not convert the data object into a GATKReportDataType. Acceptable data objects are found in the documentation.");
|
||||
//throw new UserException("GATKReport could not convert the data object into a GATKReportDataType. Acceptable data objects are found in the documentation.");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
|
@ -140,8 +149,8 @@ public enum GATKReportDataType {
|
|||
return 0.0D;
|
||||
case Boolean:
|
||||
return false;
|
||||
case Byte:
|
||||
return (byte) 0;
|
||||
case Character:
|
||||
return '0';
|
||||
case Integer:
|
||||
return 0L;
|
||||
case String:
|
||||
|
|
@ -166,16 +175,7 @@ public enum GATKReportDataType {
|
|||
case Boolean:
|
||||
case Integer:
|
||||
return a.toString().equals(b.toString());
|
||||
case Byte:
|
||||
// A mess that checks if the bytes and characters contain the same value
|
||||
if ((a instanceof Character && b instanceof Character) ||
|
||||
(a instanceof Byte && b instanceof Byte))
|
||||
return a.toString().equals(b.toString());
|
||||
else if (a instanceof Character && b instanceof Byte) {
|
||||
return ((Character) a).charValue() == ((Byte) b).byteValue();
|
||||
} else if (a instanceof Byte && b instanceof Character) {
|
||||
return ((Byte) a).byteValue() == ((Character) b).charValue();
|
||||
}
|
||||
case Character:
|
||||
case String:
|
||||
default:
|
||||
return a.equals(b);
|
||||
|
|
@ -201,8 +201,8 @@ public enum GATKReportDataType {
|
|||
return Long.parseLong(str);
|
||||
case String:
|
||||
return str;
|
||||
case Byte:
|
||||
return (byte) str.toCharArray()[0];
|
||||
case Character:
|
||||
return str.toCharArray()[0];
|
||||
default:
|
||||
return str;
|
||||
}
|
||||
|
|
@ -225,7 +225,7 @@ public enum GATKReportDataType {
|
|||
return "%d";
|
||||
case String:
|
||||
return "%s";
|
||||
case Byte:
|
||||
case Character:
|
||||
return "%c";
|
||||
case Null:
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ public class GATKReportTable {
|
|||
* @param dottedColumnValues Period concatenated values.
|
||||
* @return The first primary key matching the column values or throws an exception.
|
||||
*/
|
||||
public Object getPrimaryKey(String dottedColumnValues) {
|
||||
public Object getPrimaryKeyByData(String dottedColumnValues) {
|
||||
Object key = findPrimaryKey(dottedColumnValues);
|
||||
if (key == null)
|
||||
throw new ReviewedStingException("Attempted to get non-existent GATKReportTable key for values: " + dottedColumnValues);
|
||||
|
|
@ -411,9 +411,8 @@ public class GATKReportTable {
|
|||
if (value == null)
|
||||
value = "null";
|
||||
|
||||
// This code is bs. Why am do I have to conform to bad code
|
||||
// Below is some ode to convert a string into its appropriate type.
|
||||
// This is just Roger ranting
|
||||
// This code below is bs. Why am do I have to conform to bad code
|
||||
// Below is some code to convert a string into its appropriate type.
|
||||
|
||||
// If we got a string but the column is not a String type
|
||||
Object newValue = null;
|
||||
|
|
@ -431,7 +430,7 @@ public class GATKReportTable {
|
|||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
if (column.getDataType().equals(GATKReportDataType.Byte) && ((String) value).length() == 1) {
|
||||
if (column.getDataType().equals(GATKReportDataType.Character) && ((String) value).length() == 1) {
|
||||
newValue = ((String) value).charAt(0);
|
||||
|
||||
}
|
||||
|
|
@ -816,7 +815,7 @@ public class GATKReportTable {
|
|||
out.println();
|
||||
}
|
||||
|
||||
out.println();
|
||||
out.println();
|
||||
}
|
||||
|
||||
public int getNumRows() {
|
||||
|
|
@ -877,8 +876,6 @@ public class GATKReportTable {
|
|||
this.set(rowKey, columnKey, toAdd.get(rowKey));
|
||||
//System.out.printf("Putting row with PK: %s \n", rowKey);
|
||||
} else {
|
||||
|
||||
// TODO we should be able to handle combining data by adding, averaging, etc.
|
||||
this.set(rowKey, columnKey, toAdd.get(rowKey));
|
||||
|
||||
System.out.printf("OVERWRITING Row with PK: %s \n", rowKey);
|
||||
|
|
|
|||
|
|
@ -94,8 +94,11 @@ public class RecalibrationReport {
|
|||
BitSet key = entry.getKey();
|
||||
RecalDatum otherDatum = entry.getValue();
|
||||
RecalDatum thisDatum = thisTable.get(key);
|
||||
thisDatum.increment(otherDatum); // add the two datum objects into 'this'
|
||||
thisDatum.resetCalculatedQualities(); // reset the empirical quality to make sure the user doesn't forget to recalculate it
|
||||
if (thisDatum == null)
|
||||
thisDatum = otherDatum; // sometimes the datum in other won't be present in 'this'. So just assign it!
|
||||
else
|
||||
thisDatum.increment(otherDatum); // add the two datum objects into 'this'
|
||||
thisDatum.resetCalculatedQualities(); // reset the empirical quality to make sure the user doesn't forget to recalculate it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,21 +34,22 @@ import java.io.IOException;
|
|||
import java.io.PrintStream;
|
||||
|
||||
public class GATKReportUnitTest extends BaseTest {
|
||||
@Test(enabled = false)
|
||||
@Test
|
||||
public void testParse() throws Exception {
|
||||
String reportPath = validationDataLocation + "exampleGATKReportv1.tbl";
|
||||
GATKReport report = new GATKReport(reportPath);
|
||||
Assert.assertEquals(report.getVersion(), GATKReportVersion.V1_0);
|
||||
Assert.assertEquals(report.getTables().size(), 5);
|
||||
|
||||
GATKReportTable countVariants = report.getTable("CountVariants");
|
||||
//Assert.assertEquals(countVariants.getVersion(), GATKReportVersion.V0_1);
|
||||
Object countVariantsPK = countVariants.getPrimaryKey("none.eval.none.all");
|
||||
Assert.assertEquals(countVariants.get(countVariantsPK, "nProcessedLoci"), "100000");
|
||||
Assert.assertEquals(countVariants.get(countVariantsPK, "nNoCalls"), "99872");
|
||||
Object countVariantsPK = countVariants.getPrimaryKeyByData("dbsnp.eval.none.all");
|
||||
Assert.assertEquals(countVariants.get(countVariantsPK, "nProcessedLoci"), "63025520");
|
||||
Assert.assertEquals(countVariants.get(countVariantsPK, "nNoCalls"), "0");
|
||||
Assert.assertEquals(countVariants.get(countVariantsPK, "heterozygosity"), 4.73e-06);
|
||||
|
||||
GATKReportTable validationReport = report.getTable("ValidationReport");
|
||||
//Assert.assertEquals(validationReport.getVersion(), GATKReportVersion.V0_1);
|
||||
Object validationReportPK = countVariants.getPrimaryKey("none.eval.none.known");
|
||||
Assert.assertEquals(validationReport.get(validationReportPK, "sensitivity"), "NaN");
|
||||
Object validationReportPK = countVariants.getPrimaryKeyByData("dbsnp.eval.none.novel");
|
||||
Assert.assertEquals(validationReport.get(validationReportPK, "PPV"), Double.NaN);
|
||||
}
|
||||
|
||||
@DataProvider(name = "rightAlignValues")
|
||||
|
|
@ -117,15 +118,15 @@ public class GATKReportUnitTest extends BaseTest {
|
|||
report1.addTable("TableName", "Description");
|
||||
report1.getTable("TableName").addPrimaryKey("id", displayPK);
|
||||
report1.getTable("TableName").addColumn("colA", GATKReportDataType.String.getDefaultValue(), "%s");
|
||||
report1.getTable("TableName").addColumn("colB", GATKReportDataType.Byte.getDefaultValue(), "%c");
|
||||
report1.getTable("TableName").addColumn("colB", GATKReportDataType.Character.getDefaultValue(), "%c");
|
||||
report1.getTable("TableName").set(1, "colA", "NotNum");
|
||||
report1.getTable("TableName").set(1, "colB", (byte) 64);
|
||||
report1.getTable("TableName").set(1, "colB", (char) 64);
|
||||
|
||||
report2 = new GATKReport();
|
||||
report2.addTable("TableName", "Description");
|
||||
report2.getTable("TableName").addPrimaryKey("id", displayPK);
|
||||
report2.getTable("TableName").addColumn("colA", GATKReportDataType.String.getDefaultValue(), "%s");
|
||||
report2.getTable("TableName").addColumn("colB", GATKReportDataType.Byte.getDefaultValue(), "%c");
|
||||
report2.getTable("TableName").addColumn("colB", GATKReportDataType.Character.getDefaultValue(), "%c");
|
||||
report2.getTable("TableName").set(2, "colA", "df3");
|
||||
report2.getTable("TableName").set(2, "colB", 'A');
|
||||
|
||||
|
|
@ -133,7 +134,7 @@ public class GATKReportUnitTest extends BaseTest {
|
|||
report3.addTable("TableName", "Description");
|
||||
report3.getTable("TableName").addPrimaryKey("id", displayPK);
|
||||
report3.getTable("TableName").addColumn("colA", GATKReportDataType.String.getDefaultValue(), "%s");
|
||||
report3.getTable("TableName").addColumn("colB", GATKReportDataType.Byte.getDefaultValue(), "%c");
|
||||
report3.getTable("TableName").addColumn("colB", GATKReportDataType.Character.getDefaultValue(), "%c");
|
||||
report3.getTable("TableName").set(3, "colA", "df5f");
|
||||
report3.getTable("TableName").set(3, "colB", 'c');
|
||||
|
||||
|
|
@ -146,13 +147,13 @@ public class GATKReportUnitTest extends BaseTest {
|
|||
table.addColumn("SomeInt", GATKReportDataType.Integer.getDefaultValue(), true, "%d");
|
||||
table.addColumn("SomeFloat", GATKReportDataType.Decimal.getDefaultValue(), true, "%.16E");
|
||||
table.addColumn("TrueFalse", false, true, "%B");
|
||||
table.set("12df", "SomeInt", 34);
|
||||
table.set("12df", "SomeInt", Byte.MAX_VALUE);
|
||||
table.set("12df", "SomeFloat", 34.0);
|
||||
table.set("12df", "TrueFalse", true);
|
||||
table.set("5f", "SomeInt", -1);
|
||||
table.set("5f", "SomeFloat", 0.000003);
|
||||
table.set("5f", "SomeInt", Short.MAX_VALUE);
|
||||
table.set("5f", "SomeFloat", Double.MAX_VALUE);
|
||||
table.set("5f", "TrueFalse", false);
|
||||
table.set("RZ", "SomeInt", 904948230958203958L);
|
||||
table.set("RZ", "SomeInt", Long.MAX_VALUE);
|
||||
table.set("RZ", "SomeFloat", 535646345.657453464576);
|
||||
table.set("RZ", "TrueFalse", true);
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ object PipelineTest extends BaseTest with Logging {
|
|||
println(" value (min,target,max) table key metric")
|
||||
for (validation <- evalSpec.validations) {
|
||||
val table = report.getTable(validation.table)
|
||||
val key = table.getPrimaryKey(validation.key)
|
||||
val key = table.getPrimaryKeyByData(validation.key)
|
||||
val value = String.valueOf(table.get(key, validation.metric))
|
||||
val inRange = if (value == null) false else validation.inRange(value)
|
||||
val flag = if (!inRange) "*" else " "
|
||||
|
|
|
|||
Loading…
Reference in New Issue