Skip to content
Snippets Groups Projects
Commit b033cdb8 authored by kaloyane's avatar kaloyane
Browse files

[LMS-2269] do not display "median" and "deviation" columns if there is only...

[LMS-2269] do not display "median" and "deviation" columns if there is only one replica. Rename the column from "repl. 1" to "Value" when there is only one feature.

SVN: 21735
parent 1d1f5de5
No related branches found
No related tags found
No related merge requests found
...@@ -30,9 +30,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; ...@@ -30,9 +30,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel;
import ch.systemsx.cisd.openbis.generic.shared.util.IColumnGroup; import ch.systemsx.cisd.openbis.generic.shared.util.IColumnGroup;
import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder; import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder;
import ch.systemsx.cisd.openbis.plugin.screening.shared.IScreeningServer; import ch.systemsx.cisd.openbis.plugin.screening.shared.IScreeningServer;
import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialBiologicalReplicateFeatureSummary;
import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaFeatureSummary; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaFeatureSummary;
import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaFeatureSummaryResult; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaFeatureSummaryResult;
import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialBiologicalReplicateFeatureSummary;
import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaSummaryAggregationType; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaSummaryAggregationType;
/** /**
...@@ -70,15 +70,20 @@ public class MaterialReplicaFeatureSummaryProvider extends ...@@ -70,15 +70,20 @@ public class MaterialReplicaFeatureSummaryProvider extends
MaterialReplicaFeatureSummaryResult replicaResult = MaterialReplicaFeatureSummaryResult replicaResult =
server.getMaterialFeatureVectorSummary(sessionToken, experimentId, materialId); server.getMaterialFeatureVectorSummary(sessionToken, experimentId, materialId);
List<MaterialReplicaFeatureSummary> rows = replicaResult.getFeatureSummaries();
boolean displayMedianAndDeviation = shouldDisplayMedianAndDeviationColumns(rows);
builder.addColumn(FEATURE); builder.addColumn(FEATURE);
builder.addColumn(MEDIAN).withDataType(DataTypeCode.REAL); if (displayMedianAndDeviation)
builder.addColumn(DEVIATION).withDataType(DataTypeCode.REAL); {
builder.addColumn(MEDIAN).withDataType(DataTypeCode.REAL);
builder.addColumn(DEVIATION).withDataType(DataTypeCode.REAL);
}
String rankTitle = String rankTitle =
ScreeningProviderMessages.getRankColumnHeader(replicaResult ScreeningProviderMessages.getRankColumnHeader(replicaResult
.getNumberOfMaterialsInExperiment()); .getNumberOfMaterialsInExperiment());
builder.addColumn(RANK).withDataType(DataTypeCode.INTEGER).withTitle(rankTitle); builder.addColumn(RANK).withDataType(DataTypeCode.INTEGER).withTitle(rankTitle);
List<MaterialReplicaFeatureSummary> rows = replicaResult.getFeatureSummaries();
List<String> subgroupLabels = replicaResult.getSubgroupLabels(); List<String> subgroupLabels = replicaResult.getSubgroupLabels();
if (rows.isEmpty()) if (rows.isEmpty())
{ {
...@@ -98,21 +103,54 @@ public class MaterialReplicaFeatureSummaryProvider extends ...@@ -98,21 +103,54 @@ public class MaterialReplicaFeatureSummaryProvider extends
for (MaterialReplicaFeatureSummary row : rows) for (MaterialReplicaFeatureSummary row : rows)
{ {
addRow(builder, row, subgroupLabels); addRow(builder, row, subgroupLabels, displayMedianAndDeviation);
} }
return builder.getModel(); return builder.getModel();
} }
private boolean shouldDisplayMedianAndDeviationColumns(List<MaterialReplicaFeatureSummary> rows)
{
return false == hasOnlyOneReplica(rows);
}
private boolean hasOnlyOneReplica(List<MaterialReplicaFeatureSummary> rows)
{
for (MaterialReplicaFeatureSummary row : rows)
{
List<MaterialBiologicalReplicateFeatureSummary> allSubgroups =
row.getBiologicalRelicates();
MaterialBiologicalReplicateFeatureSummary defaultSubGroup =
row.getDirectTechnicalReplicates();
allSubgroups.add(defaultSubGroup);
if (allSubgroups.size() > 1)
{
return false;
} else if (allSubgroups.size() == 1)
{
if (allSubgroups.get(0).getFeatureValues().length > 1)
{
return false;
}
}
}
return true;
}
private void addRow(TypedTableModelBuilder<MaterialReplicaFeatureSummary> builder, private void addRow(TypedTableModelBuilder<MaterialReplicaFeatureSummary> builder,
MaterialReplicaFeatureSummary row, List<String> subgroupLabels) MaterialReplicaFeatureSummary row, List<String> subgroupLabels,
boolean displayMedianAndDeviation)
{ {
builder.addRow(row); builder.addRow(row);
builder.column(FEATURE).addString(row.getFeatureDescription().getLabel()); builder.column(FEATURE).addString(row.getFeatureDescription().getLabel());
builder.column(MEDIAN).addDouble(row.getFeatureVectorSummary());
builder.column(DEVIATION).addDouble(row.getFeatureVectorDeviation());
builder.column(RANK).addInteger((long) row.getFeatureVectorRank()); builder.column(RANK).addInteger((long) row.getFeatureVectorRank());
if (displayMedianAndDeviation)
{
builder.column(MEDIAN).addDouble(row.getFeatureVectorSummary());
builder.column(DEVIATION).addDouble(row.getFeatureVectorDeviation());
}
MaterialBiologicalReplicateFeatureSummary defaultSubgroup = MaterialBiologicalReplicateFeatureSummary defaultSubgroup =
row.getDirectTechnicalReplicates(); row.getDirectTechnicalReplicates();
...@@ -137,18 +175,20 @@ public class MaterialReplicaFeatureSummaryProvider extends ...@@ -137,18 +175,20 @@ public class MaterialReplicaFeatureSummaryProvider extends
IColumnGroup columnGroup = builder.columnGroup(groupId); IColumnGroup columnGroup = builder.columnGroup(groupId);
float[] featureValues = subgroup.getFeatureValues(); float[] featureValues = subgroup.getFeatureValues();
for (int i = 0; i < featureValues.length; i++) final int numberFeatures = featureValues.length;
for (int i = 0; i < numberFeatures; i++)
{ {
String replicaColumnId = getReplicaColumnId(groupLabel, i); String replicaColumnId = getReplicaColumnId(groupLabel, i);
String replicaColumnTitle = String replicaColumnTitle =
ScreeningProviderMessages.getReplicaColumnTitle(groupLabel, i + 1); ScreeningProviderMessages.getReplicaColumnTitle(groupLabel, i + 1,
numberFeatures);
columnGroup.column(replicaColumnId).withDataType(DataTypeCode.REAL) columnGroup.column(replicaColumnId).withDataType(DataTypeCode.REAL)
.withTitle(replicaColumnTitle).addDouble((double) featureValues[i]); .withTitle(replicaColumnTitle).addDouble((double) featureValues[i]);
} }
// aggregates should be shown only for biological replicates which have more than one // aggregates should be shown only for biological replicates which have more than one
// technical replicate // technical replicate
if (false == DEFAULT_SUBGROUP.equals(groupId) && featureValues.length > 1) if (false == DEFAULT_SUBGROUP.equals(groupId) && numberFeatures > 1)
{ {
MaterialReplicaSummaryAggregationType aggregationType = MaterialReplicaSummaryAggregationType aggregationType =
subgroup.getSummaryAggregationType(); subgroup.getSummaryAggregationType();
......
...@@ -32,10 +32,17 @@ class ScreeningProviderMessages ...@@ -32,10 +32,17 @@ class ScreeningProviderMessages
return "Rank (" + numberOfMaterialsInExperiment + ")"; return "Rank (" + numberOfMaterialsInExperiment + ")";
} }
public static String getReplicaColumnTitle(String group, int replicaNumber) public static String getReplicaColumnTitle(String group, int replicaNumber, int totalReplicas)
{ {
if (totalReplicas > 1)
{
return group + " repl. " + replicaNumber;
} else
{
return group + " Value";
}
return group + " repl. " + replicaNumber;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment