diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java index 9eb391cf28ae3d81f1d130f7bdf217bb230ba354..bd25c6b9553391a8b4be7ba3b4095000a8d1abea 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java @@ -16,8 +16,13 @@ package ch.systemsx.cisd.openbis.screening.systemtests; +import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.FeatureVectorSummaryGridColumnIDs.EXPERIMENT_PERM_ID; +import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.FeatureVectorSummaryGridColumnIDs.MATERIAL_ID; + import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Properties; @@ -34,10 +39,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridRowModels; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeAndLabel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; @@ -148,8 +155,14 @@ public class AggregatedFeatureVectorsTest extends AbstractScreeningSystemTestCas expFeatureSummary.getMaterialsSummary().get(0); assertEquals("G (GENE)", materialFeatureSummary.getMaterial().toString()); assertEquals(1, materialFeatureSummary.getNumberOfMaterialsInExperiment()); + List<CodeAndLabel> featureDescriptions = expFeatureSummary.getFeatureDescriptions(); + List<String> featureCodes = new ArrayList<String>(); + for (CodeAndLabel codeAndLabel : featureDescriptions) + { + featureCodes.add(codeAndLabel.getCode()); + } assertRanks("1, 1, 1, 1", materialFeatureSummary); - assertSummaries("3.5, 2.5, 15.0, 2.0", materialFeatureSummary); + assertSummaries("[A=15.0, B=2.0, X=3.5, Y=2.5]", featureCodes, materialFeatureSummary); assertEquals(1, expFeatureSummary.getMaterialsSummary().size()); } @@ -169,17 +182,51 @@ public class AggregatedFeatureVectorsTest extends AbstractScreeningSystemTestCas GridRowModels<TableModelRowWithObject<MaterialFeatureVectorSummary>> list = resultSet.getList(); + List<TableModelColumnHeader> columnHeaders = list.getColumnHeaders(); + List<String> featureCodes = new ArrayList<String>(); + for (TableModelColumnHeader tableModelColumnHeader : columnHeaders) + { + String title = tableModelColumnHeader.getTitle(); + if (title != null && title.equals("Rank") == false) + { + featureCodes.add(title); + } + } TableModelRowWithObject<MaterialFeatureVectorSummary> row = list.get(0).getOriginalObject(); MaterialFeatureVectorSummary materialFeatureSummary = row.getObjectOrNull(); assertEquals("G (GENE)", materialFeatureSummary.getMaterial().toString()); assertEquals(1, materialFeatureSummary.getNumberOfMaterialsInExperiment()); assertRanks("1, 1, 1, 1", materialFeatureSummary); - assertSummaries("3.5, 2.5, 15.0, 2.0", materialFeatureSummary); - assertEquals("[G, " + experiment.getPermId() + ", 3.5, 1, 2.5, 1, 15.0, 1, 2.0, 1]", row - .getValues().toString()); + assertSummaries("[A=15.0, B=2.0, X=3.5, Y=2.5]", featureCodes, materialFeatureSummary); + assertEquals("15.0", getValue("FEATURE_VALUE-A", columnHeaders, row).toString()); + assertEquals("1", getValue("RANKA", columnHeaders, row).toString()); + assertEquals("2.0", getValue("FEATURE_VALUE-B", columnHeaders, row).toString()); + assertEquals("1", getValue("RANKB", columnHeaders, row).toString()); + assertEquals("3.5", getValue("FEATURE_VALUE-X", columnHeaders, row).toString()); + assertEquals("1", getValue("RANKX", columnHeaders, row).toString()); + assertEquals("2.5", getValue("FEATURE_VALUE-Y", columnHeaders, row).toString()); + assertEquals("1", getValue("RANKY", columnHeaders, row).toString()); + assertEquals(experiment.getPermId(), getValue(EXPERIMENT_PERM_ID, columnHeaders, row).toString()); + assertEquals("G", getValue(MATERIAL_ID, columnHeaders, row).toString()); assertEquals(1, list.size()); } + private ISerializableComparable getValue(String column, + List<TableModelColumnHeader> columnHeaders, + TableModelRowWithObject<MaterialFeatureVectorSummary> row) + { + List<String> columns = new ArrayList<String>(); + for (TableModelColumnHeader header : columnHeaders) + { + columns.add(header.getId()); + if (header.getId().equals(column)) + { + return row.getValues().get(header.getIndex()); + } + } + throw new AssertionError("Unknown column '" + column + "': " + columns); + } + @Test public void testListExperimentFeatureVectorSummaryFromFile() throws Exception { @@ -278,19 +325,17 @@ public class AggregatedFeatureVectorsTest extends AbstractScreeningSystemTestCas assertEquals(expectedRanks, builder.toString()); } - private void assertSummaries(String expectedSummaries, MaterialFeatureVectorSummary materialFeatureSummary) + private void assertSummaries(String expectedSummaries, List<String> featureCodes, + MaterialFeatureVectorSummary materialFeatureSummary) { - StringBuilder builder = new StringBuilder(); + List<String> result = new ArrayList<String>(); float[] summaries = materialFeatureSummary.getFeatureVectorSummary(); - for (float number : summaries) + for (int i = 0; i < summaries.length; i++) { - if (builder.length() > 0) - { - builder.append(", "); - } - builder.append(number); + result.add(featureCodes.get(i) + "=" + summaries[i]); } - assertEquals(expectedSummaries, builder.toString()); + Collections.sort(result); + assertEquals(expectedSummaries, result.toString()); } private void assertFeatureSummary(String feature, double featureMedianValue,