diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java index a2919f628bad39ee44f3aa8e67b5dd81622eefdd..a449cc6340a29fa3229d9badc5421e43a57361be 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java @@ -89,18 +89,19 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements { // Register the service with the name server RpcServiceInterfaceVersionDTO ifaceVersion = - new RpcServiceInterfaceVersionDTO("screening-dss", - "/rmi-datastore-server-screening-api-v1", getMajorVersion(), - getMinorVersion()); + new RpcServiceInterfaceVersionDTO("screening-dss", + "/rmi-datastore-server-screening-api-v1", getMajorVersion(), + getMinorVersion()); HttpInvokerServiceExporter nameServiceExporter = - ServiceProvider.getRpcNameServiceExporter(); - RpcServiceNameServer nameServer = (RpcServiceNameServer) nameServiceExporter.getService(); + ServiceProvider.getRpcNameServiceExporter(); + RpcServiceNameServer nameServer = + (RpcServiceNameServer) nameServiceExporter.getService(); nameServer.addSupportedInterfaceVersion(ifaceVersion); - + operationLog.info("[rpc] Started DSS RPC screening service V1."); } } - + // ------------------ impl ----------------- public List<String> listAvailableFeatureNames(String sessionToken, @@ -153,11 +154,10 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements HCSImageDatasetLoaderFactory.create(datasetRoot, dataset.getDatasetCode()); IContent imageFile = getAnyImagePath(imageAccessor, dataset); Geometry wellGeometry = imageAccessor.getWellGeometry(); - int channelsNumber = imageAccessor.getChannelCount(); int tilesNumber = wellGeometry.getColumns() * wellGeometry.getRows(); BufferedImage image = ImageUtil.loadImage(imageFile.getInputStream()); - return new ImageDatasetMetadata(dataset, channelsNumber, tilesNumber, image.getWidth(), - image.getHeight()); + return new ImageDatasetMetadata(dataset, imageAccessor.getChannelsNames(), tilesNumber, + image.getWidth(), image.getHeight()); } private static IContent getAnyImagePath(IHCSImageDatasetLoader imageAccessor, @@ -199,7 +199,8 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements private FeatureVectorDataset createFeatureVectorDataset(String sessionToken, FeatureVectorDatasetReference dataset, List<String> featureNames) { - FeatureTableBuilder builder = new FeatureTableBuilder(featureNames, getDAO(), getOpenBISService()); + FeatureTableBuilder builder = + new FeatureTableBuilder(featureNames, getDAO(), getOpenBISService()); builder.addFeatureVectorsOfDataSet(dataset.getDatasetCode()); List<String> existingFeatureNames = builder.getFeatureNames(); List<FeatureTableRow> featureTableRows = builder.getFeatureTableRows(); @@ -361,7 +362,7 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements { return 0; } - + private List<ImgFeatureDefDTO> getFeatureDefinitions(IDatasetIdentifier identifier) { ImgDatasetDTO dataSet = getDAO().tryGetDatasetByPermId(identifier.getDatasetCode()); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java index 461b00c6ff1e5c6fd82d478ab17c55dd80641315..75577297c6d662a5065f7970d36b0e9ab729135a 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java @@ -245,6 +245,11 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa * Saves images for a given list of image references (given by data set code, well position, * channel and tile) in the provided output streams. Output streams will not be closed * automatically.<br> + * <p> + * If there is an image reference specified which is not referring to the existing image on the + * server, nothing will be written to the output stream returned by the output streams provider. + * No exception will be thrown. + * </p> * The number of image references has to be the same as the number of files. * * @throws IOException when reading images from the server or writing them to the output streams diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java index 920945a051fb1116d5a0e60d5f865da5aba1d3f8..517b00b9d44f04d769739cc2991f9407e222bc53 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java @@ -1,6 +1,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.io.Serializable; +import java.util.List; /** * Metadata information about images in a specified dataset. @@ -15,17 +16,20 @@ public class ImageDatasetMetadata implements Serializable private final int channelsNumber; + private final List<String> channelNames; + private final int tilesNumber; private final int width; private final int height; - public ImageDatasetMetadata(IImageDatasetIdentifier dataset, int channelsNumber, + public ImageDatasetMetadata(IImageDatasetIdentifier dataset, List<String> channelNames, int tilesNumber, int width, int height) { this.imageDataset = dataset; - this.channelsNumber = channelsNumber; + this.channelNames = channelNames; + this.channelsNumber = channelNames.size(); this.tilesNumber = tilesNumber; this.width = width; this.height = height; @@ -45,6 +49,14 @@ public class ImageDatasetMetadata implements Serializable return channelsNumber; } + /** + * names of channels in which images have been acquired for the described dataset + */ + public List<String> getChannelNames() + { + return channelNames; + } + /** * number of image tiles (aka fields) into which each well is splited */ @@ -68,7 +80,7 @@ public class ImageDatasetMetadata implements Serializable @Override public String toString() { - return "Dataset " + imageDataset + " has " + channelsNumber + " channels, " + tilesNumber + return "Dataset " + imageDataset + " has [" + channelNames + "] channels, " + tilesNumber + " tiles. Images resolution: " + width + "x" + height; } } \ No newline at end of file diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java index 16fa7369b7dff1b6b994d88c66945a9523d053b0..14feaf5983a7729e1bf4b7cfd70ef7146b3812e5 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/IHCSDatasetLoader.java @@ -35,8 +35,6 @@ public interface IHCSDatasetLoader Geometry getWellGeometry(); - int getChannelCount(); - List<String> getChannelsNames(); } \ No newline at end of file