diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java index 1455b68c8a413c63854962e1d9c95ab1374e15a4..70cd0c57689a4b224471fc9af86b7ce8bb29df2c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java @@ -173,7 +173,9 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc extractCanonicalFeatureVectors(dataSet, dataSetInformation, datasetInfo.getContainerGeometry()); - FeatureVectorUploader uploader = new FeatureVectorUploader(dataAccessObject, datasetInfo); + FeatureVectorUploader uploader = + new FeatureVectorUploader(dataAccessObject, datasetInfo, + dataSetInformation.getDataSetCode()); uploader.uploadFeatureVectors(fvecs); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java index 1d1dca3806f06eab38ec92926ed8c7c7fa5ab7f1..4ed4cfdce19c95b7d1e33f4c0e1352e672526309 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java @@ -37,10 +37,22 @@ public class FeatureVectorUploader private final HCSContainerDatasetInfo info; + /** + * The perm id of the dataset, which is the actual analysis dataset + */ + private final String dataSetPermID; + public FeatureVectorUploader(IImagingQueryDAO imagingDao, HCSContainerDatasetInfo info) + { + this(imagingDao, info, info.getDatasetPermId()); + } + + public FeatureVectorUploader(IImagingQueryDAO imagingDao, HCSContainerDatasetInfo info, + String dataSetPermID) { this.dao = imagingDao; this.info = info; + this.dataSetPermID = dataSetPermID; } /** @@ -51,12 +63,13 @@ public class FeatureVectorUploader { long contId = ImagingDatabaseHelper.getOrCreateExperimentAndContainer(dao, info); long dataSetId = createFeatureVectorDataset(contId); + uploadFeatureVectors(dao, fvecs, dataSetId); } private long createFeatureVectorDataset(long contId) { - ImgAnalysisDatasetDTO dataset = new ImgAnalysisDatasetDTO(info.getDatasetPermId(), contId); + ImgAnalysisDatasetDTO dataset = new ImgAnalysisDatasetDTO(dataSetPermID, contId); return dao.addAnalysisDataset(dataset); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java index 8430c838efb81c93eceed6035a0d064f55d9dfc7..1d93dacec0462a1f2b1fc2fd933e8c9fe75e1270 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java @@ -208,7 +208,8 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor FeatureVectorUploader uploader = new FeatureVectorUploader(dataAccessObject, - createScreeningDatasetInfo(dataSetInformation)); + createScreeningDatasetInfo(dataSetInformation), + dataSetInformation.getDataSetCode()); uploader.uploadFeatureVectors(fvecs); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java index e0a397fb5188377e83d7534c13ca5ae2f1495cbe..0070194a42d7da09a3348d0bf955eed8debf598d 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java @@ -638,13 +638,26 @@ public class FeatureVectorLoader List<FeatureVectorValues> featureVectors = new ArrayList<FeatureVectorValues>(); for (WellFeatureVectorReference reference : references) { - String dataSetCode = reference.getDatasetCode(); - DatasetFeaturesBundle bundle = bundleMap.get(dataSetCode); - if (bundle != null) + String referenceDataSetCode = reference.getDatasetCode(); + + List<String> allCodes = new LinkedList<String>(); + allCodes.add(referenceDataSetCode); + + if (metadataProviderOrNull != null) + { + allCodes.addAll(metadataProviderOrNull + .tryGetContainedDatasets(referenceDataSetCode)); + } + + for (String dataSetCode : allCodes) { - FeatureVectorValues featureVector = - createFeatureVector(bundle, reference.getWellLocation()); - featureVectors.add(featureVector); + DatasetFeaturesBundle bundle = bundleMap.get(dataSetCode); + if (bundle != null) + { + FeatureVectorValues featureVector = + createFeatureVector(bundle, reference.getWellLocation()); + featureVectors.add(featureVector); + } } } return featureVectors; diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java index e7675af4a9dd041fbbc126bc4edb8aa411fa5bff..10d4db4bfe700f9ad397d371ad1f0c78b7cc91bf 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.dss.generic.server.plugins; import java.io.File; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Properties; @@ -112,6 +113,12 @@ public class ImageAnalysisMergedRowsReportingPluginTest extends AssertJUnit context.checking(new Expectations() { { + one(service).tryGetContainedDatasets(ds1.getDataSetCode()); + will(returnValue(Collections.emptyList())); + + one(service).tryGetContainedDatasets(ds2.getDataSetCode()); + will(returnValue(Collections.emptyList())); + one(dao).listAnalysisDatasetsByPermId(ds1.getDataSetCode(), ds2.getDataSetCode()); will(returnValue(Arrays.asList(createDataSet(1), createDataSet(2))));