From 8a06ce3bcf22b44e94e4b691e5fc07d445d58ae4 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Wed, 18 May 2011 11:54:42 +0000
Subject: [PATCH] LMS-2256 display the number of genes in the assay in the gene
 summary view

SVN: 21370
---
 .../server/FeatureVectorSummaryProvider.java    |  4 ++--
 .../MaterialReplicaFeatureSummaryProvider.java  |  3 ++-
 .../MaterialFeatureVectorSummaryLoader.java     |  7 ++++++-
 .../logic/WellReplicaSummaryCalculator.java     | 17 +++++++++--------
 .../basic/dto/MaterialFeatureVectorSummary.java | 11 ++++++++++-
 .../MaterialReplicaFeatureSummaryResult.java    |  9 ++++++++-
 .../FeatureVectorSummaryGridColumnIDs.java      |  2 +-
 7 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/FeatureVectorSummaryProvider.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/FeatureVectorSummaryProvider.java
index a06bbb354c8..4d664115a3e 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/FeatureVectorSummaryProvider.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/FeatureVectorSummaryProvider.java
@@ -43,7 +43,7 @@ class FeatureVectorSummaryProvider extends AbstractTableModelProvider<MaterialFe
 {
     private static final String SHOW_DETAILS_MSG = "Show details";
 
-    private static final String RANK_COLUMN_TITLE_SUFFIX_MSG = " rank";
+    private static final String RANK_COLUMN_MSG = " Rank";
 
     private static final String MATERIAL_PROPS_GROUP = "MATERIAL_PROP-";
 
@@ -89,7 +89,7 @@ class FeatureVectorSummaryProvider extends AbstractTableModelProvider<MaterialFe
             featureColumnIds.add(featureColumnId);
 
             String rankColumnId = getRankColumnId(featureCode);
-            String rankTitle = featureLabel + RANK_COLUMN_TITLE_SUFFIX_MSG;
+            String rankTitle = RANK_COLUMN_MSG;
             builder.addColumn(rankColumnId).withTitle(rankTitle).withDataType(DataTypeCode.INTEGER);
             rankColumnIds.add(rankColumnId);
         }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/MaterialReplicaFeatureSummaryProvider.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/MaterialReplicaFeatureSummaryProvider.java
index bcd8e51afe5..3ab37d858d3 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/MaterialReplicaFeatureSummaryProvider.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/MaterialReplicaFeatureSummaryProvider.java
@@ -73,7 +73,8 @@ class MaterialReplicaFeatureSummaryProvider extends
         builder.addColumn(FEATURE);
         builder.addColumn(MEDIAN).withDataType(DataTypeCode.REAL);
         builder.addColumn(DEVIATION).withDataType(DataTypeCode.REAL);
-        builder.addColumn(RANK).withDataType(DataTypeCode.INTEGER);
+        String rankTitle = "Rank (" + replicaResult.getNumberOfMaterialsInExperiment() + ")";
+        builder.addColumn(RANK).withDataType(DataTypeCode.INTEGER).withTitle(rankTitle);
 
         List<MaterialReplicaFeatureSummary> rows = replicaResult.getFeatureSummaries();
         List<String> subgroupLabels = replicaResult.getSubgroupLabels();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/MaterialFeatureVectorSummaryLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/MaterialFeatureVectorSummaryLoader.java
index 672cee58449..6b6d025c2ae 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/MaterialFeatureVectorSummaryLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/MaterialFeatureVectorSummaryLoader.java
@@ -66,7 +66,12 @@ public class MaterialFeatureVectorSummaryLoader extends ExperimentFeatureVectorS
 
         List<MaterialReplicaFeatureSummary> replicaRows = convertToFeatureRows(resultOrNull);
         List<String> subgroupLabels = tryGetSubgroupLabels(resultOrNull);
-        return new MaterialReplicaFeatureSummaryResult(subgroupLabels, replicaRows);
+
+        int materialsInExperiment =
+                (resultOrNull != null ? resultOrNull.getGeneralSummary()
+                        .getNumberOfMaterialsInExperiment() : 0);
+        return new MaterialReplicaFeatureSummaryResult(subgroupLabels, replicaRows,
+                materialsInExperiment);
     }
 
     private static List<MaterialReplicaFeatureSummary> convertToFeatureRows(
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellReplicaSummaryCalculator.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellReplicaSummaryCalculator.java
index 3739e11f46c..66b586a140d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellReplicaSummaryCalculator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/WellReplicaSummaryCalculator.java
@@ -35,8 +35,8 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialFeatur
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.MaterialReplicaSummaryAggregationType;
 
 /**
- * Calculates summaries and ranks for each group of well replicas. Usually a replica is determined
- * by the material in the well, e.g. gene or compound.
+ * Calculates summaries and ranks for each group of well replicas (biological or technical). Usually
+ * a replica is determined by the material in the well, e.g. gene or compound.
  * 
  * @author Tomasz Pylak
  */
@@ -50,13 +50,13 @@ public class WellReplicaSummaryCalculator
                 .calculateReplicasFeatureVectorSummaries();
     }
 
-    public static float[] calculateSummaryFeatureVector(List<IWellData> oneReplicaWells,
+    public static float[] calculateSummaryFeatureVector(List<IWellData> techicalReplicaWells,
             MaterialReplicaSummaryAggregationType aggregationType)
     {
-        validate(oneReplicaWells);
-        int numberOfFeatures = getNumberOfFeatures(oneReplicaWells);
-        return calculateSummaryFeatureVector(oneReplicaWells, aggregationType, numberOfFeatures)
-                .getAggregates();
+        validate(techicalReplicaWells);
+        int numberOfFeatures = getNumberOfFeatures(techicalReplicaWells);
+        return calculateSummaryFeatureVector(techicalReplicaWells, aggregationType,
+                numberOfFeatures).getAggregates();
     }
 
     private static void validate(List<IWellData> wellDataList)
@@ -112,6 +112,7 @@ public class WellReplicaSummaryCalculator
         List<MaterialFeatureVectorSummary> summaries =
                 new ArrayList<MaterialFeatureVectorSummary>();
         Set<Long> replicaIds = replicaToWellDataMap.getKeys();
+        int numberOfReplicas = replicaIds.size();
         for (Long replicaId : replicaIds)
         {
             List<IWellData> replicaWells = replicaToWellDataMap.getOrDie(replicaId);
@@ -120,7 +121,7 @@ public class WellReplicaSummaryCalculator
             Material material = replicaWells.get(0).getMaterial();
             MaterialFeatureVectorSummary summary =
                     new MaterialFeatureVectorSummary(material, summaryFeatures.getAggregates(),
-                            summaryFeatures.getDeviation(), ranks.get(replicaId));
+                            summaryFeatures.getDeviation(), ranks.get(replicaId), numberOfReplicas);
             summaries.add(summary);
         }
         return summaries;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialFeatureVectorSummary.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialFeatureVectorSummary.java
index 1830116e17b..69656ef667b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialFeatureVectorSummary.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialFeatureVectorSummary.java
@@ -37,6 +37,8 @@ public class MaterialFeatureVectorSummary implements ISerializable
 
     private int[] featureVectorRanks;
 
+    private int numberOfMaterialsInExperiment;
+
     // GTW
     @SuppressWarnings("unused")
     private MaterialFeatureVectorSummary()
@@ -44,12 +46,14 @@ public class MaterialFeatureVectorSummary implements ISerializable
     }
 
     public MaterialFeatureVectorSummary(Material material, float[] featureVectorSummary,
-            float[] featureVectorDeviations, int[] featureVectorRanks)
+            float[] featureVectorDeviations, int[] featureVectorRanks,
+            int numberOfMaterialsInExperiment)
     {
         this.material = material;
         this.featureVectorSummary = featureVectorSummary;
         this.featureVectorDeviations = featureVectorDeviations;
         this.featureVectorRanks = featureVectorRanks;
+        this.numberOfMaterialsInExperiment = numberOfMaterialsInExperiment;
     }
 
     public Material getMaterial()
@@ -71,4 +75,9 @@ public class MaterialFeatureVectorSummary implements ISerializable
     {
         return featureVectorRanks;
     }
+
+    public int getNumberOfMaterialsInExperiment()
+    {
+        return numberOfMaterialsInExperiment;
+    }
 }
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialReplicaFeatureSummaryResult.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialReplicaFeatureSummaryResult.java
index 5ed046fb71b..4dbb554f836 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialReplicaFeatureSummaryResult.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/MaterialReplicaFeatureSummaryResult.java
@@ -36,11 +36,14 @@ public class MaterialReplicaFeatureSummaryResult implements ISerializable
     // represents a single row in the table
     private final List<MaterialReplicaFeatureSummary> replicaSummaries;
 
+    private final int numberOfMaterialsInExperiment;
+
     public MaterialReplicaFeatureSummaryResult(List<String> subgroupLabels,
-            List<MaterialReplicaFeatureSummary> replicaSummaries)
+            List<MaterialReplicaFeatureSummary> replicaSummaries, int numberOfMaterialsInExperiment)
     {
         this.subgroupLabels = Collections.unmodifiableList(subgroupLabels);
         this.replicaSummaries = Collections.unmodifiableList(replicaSummaries);
+        this.numberOfMaterialsInExperiment = numberOfMaterialsInExperiment;
     }
 
     public List<String> getSubgroupLabels()
@@ -54,4 +57,8 @@ public class MaterialReplicaFeatureSummaryResult implements ISerializable
         return replicaSummaries;
     }
 
+    public int getNumberOfMaterialsInExperiment()
+    {
+        return numberOfMaterialsInExperiment;
+    }
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/FeatureVectorSummaryGridColumnIDs.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/FeatureVectorSummaryGridColumnIDs.java
index e0c05a93868..7c920a3dfa5 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/FeatureVectorSummaryGridColumnIDs.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/grids/FeatureVectorSummaryGridColumnIDs.java
@@ -25,6 +25,6 @@ public class FeatureVectorSummaryGridColumnIDs
 
     public static final String DETAILS = "details";
 
-    public static final String RANK_PREFIX = "RANK-";
+    public static final String RANK_PREFIX = "RANK";
 
 }
-- 
GitLab