diff --git a/screening/dist/admin/create-empty-screening-db.sh b/screening/dist/admin/create-empty-screening-db.sh new file mode 100644 index 0000000000000000000000000000000000000000..b56383d885cdfbb08d6a96011597195e38bad661 --- /dev/null +++ b/screening/dist/admin/create-empty-screening-db.sh @@ -0,0 +1,6 @@ +BASE=`dirname "$0"` +if [ ${BASE#/} == ${BASE} ]; then + BASE="`pwd`/${BASE}" +fi + +$BASE/post-install/1-create-initial-database.sh diff --git a/screening/dist/etc/service.properties b/screening/dist/etc/service.properties index fc093f9c5b2a4c36055b3b797ff59cc336662c33..be3a27e046689a3b53835e40df77f2f464435aea 100644 --- a/screening/dist/etc/service.properties +++ b/screening/dist/etc/service.properties @@ -97,7 +97,7 @@ imaging-db.password = # Leave empty to use the db engines defaults. # Used only during the first start of the server or when server is upgraded to a new version. imaging-db.adminUser = -imaging-db.adminPassword = +imaging-db.adminPassword = # --------------------------------------------------------------------------- # reporting and processing plugins configuration @@ -191,27 +191,186 @@ import-space-code = DEMO # Comma separated names of processing threads. Each thread should have configuration properties prefixed with its name. # E.g. 'code-extractor' property for the thread 'my-etl' should be specified as 'my-etl.code-extractor' -inputs=simple-dropbox +inputs=merged-channels-images, split-channels-images, image-analysis-results -# --------------------------------------------------------------------------- -# --------------------------------------------------------------------------- -# --- Jython dropbox for HCS images ----------------------------------------------- # --------------------------------------------------------------------------- # The directory to watch for incoming data. -simple-dropbox.incoming-dir = ${incoming-root-dir}/incoming-simple -simple-dropbox.incoming-data-completeness-condition = auto-detection +merged-channels-images.incoming-dir = ${incoming-root-dir}/incoming-images-merged-channels +merged-channels-images.incoming-data-completeness-condition = auto-detection # The extractor class to use for code extraction -simple-dropbox.top-level-data-set-handler = ch.systemsx.cisd.openbis.dss.etl.jython.JythonPlateDataSetHandler -simple-dropbox.script-path = ${incoming-root-dir}/dropboxes/simple-dropbox.py - -simple-dropbox.storage-processor = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor -simple-dropbox.storage-processor.data-source = imaging-db -#simple-dropbox.storage-processor.file-extractor = ch.systemsx.cisd.openbis.dss.etl.jython.JythonImageFileExtractor -simple-dropbox.storage-processor.define-channels-per-experiment = false -# -- Should the thumbnails be generated? +merged-channels-images.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor +merged-channels-images.data-set-info-extractor.entity-separator = . +merged-channels-images.data-set-info-extractor.index-of-sample-code = 0 +merged-channels-images.data-set-info-extractor.index-of-data-producer-code = +merged-channels-images.data-set-info-extractor.space-code = ${import-space-code} + +# The extractor class to use for type extraction +merged-channels-images.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor +merged-channels-images.type-extractor.file-format-type = JPG +merged-channels-images.type-extractor.locator-type = RELATIVE_LOCATION +merged-channels-images.type-extractor.data-set-type = HCS_IMAGE_OVERVIEW +merged-channels-images.type-extractor.is-measured = true + +# Note: this storage processor is able to process folders compressed with zip as well +merged-channels-images.storage-processor = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor +# How should the original data be stored? Possible values: +# unchanged - nothing is changed, the default +# hdf5 - all the data will be packaged into one hdf5 file +# hdf5_compressed - like hdf5, but each file is stored in a compressed form +merged-channels-images.storage-processor.original-data-storage-format = unchanged +# Should the thumbnails be generated? # It slows down the dataset registration, but increases the performance when the user wants to see the image. # Can be 'true' or 'false', 'false' is the default value -# simple-dropbox.storage-processor.generate-thumbnails = false -# simple-dropbox.storage-processor.compress-thumbnails = true +merged-channels-images.storage-processor.generate-thumbnails = false +# Thumbnails size in pixels +# merged-channels-images.storage-processor.thumbnail-max-width = 300 +# merged-channels-images.storage-processor.thumbnail-max-height = 200 +# Codes of the channels in which images have been acquired. Allowed characters: [A-Z0-9_-]. +# Number and order of entries must be consistent with 'channel-labels'. +merged-channels-images.storage-processor.channel-codes = GFP, DAPI +# Labels of the channels in which images have been acquired. +# Number and order of entries must be consistent with 'channel-codes'. +merged-channels-images.storage-processor.channel-labels = Gfp, Dapi + +# Optional boolean property, true by default. +# Set to false to allow datasets in one experiment to use different channels. +# In this case 'channel-codes' and 'channel-labels' become optional and are used only to determine the label for each channel code. +# It should be set to 'false' for overlay image datasets. +#merged-channels-images.storage-processor.define-channels-per-experiment = false + +# Optional boolean property, true by default. +# If true an email is sent if some images for the uploaded plate are missing. +#merged-channels-images.storage-processor.notify-if-incomplete = false + +# Optional boolean property, true by default. +# If set to false then the dataset whcih cannot be registered will be left in the incoming folder +# and will be mentioned in the .faulty_paths file +#merged-channels-images.storage-processor.move-unregistered-datasets-to-error-dir = false + +# This is an optional boolean property which defines if all image datasets in one experiment have the same +# channels or if each imported dataset can have different channels. By default true if not specified. +#merged-channels-images.storage-processor.define-channels-per-experiment = false +# Format: [width]>x[height], e.g. 3x4. Specifies the grid into which a microscope divided the well to acquire images. +merged-channels-images.storage-processor.well_geometry = 3x3 +# implementation of the IHCSImageFileExtractor interface which maps images to the location on the plate and particular channel +# Here: the extractor requireds that each image name should adhere to the schema: +# <any-text>_<plate-code>_<well-code>_<tile-code>_<channel-name>.<allowed-image-extension> +merged-channels-images.storage-processor.file-extractor = ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractor +# specification of the imaging db +merged-channels-images.storage-processor.data-source = imaging-db +# Optional comma separated list of color components. +# Available values: RED, GREEN or BLUE. +# If specified then the channels are extracted from the color components and override 'file-extractor' results. +merged-channels-images.storage-processor.extract-single-image-channels = GREEN, BLUE + +# --------------------------------------------------------------------------- + +# The directory to watch for incoming data. +split-channels-images.incoming-dir = ${incoming-root-dir}/incoming-images-split-channels +split-channels-images.incoming-data-completeness-condition = auto-detection + +# The extractor class to use for code extraction +split-channels-images.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor +split-channels-images.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator} +split-channels-images.data-set-info-extractor.index-of-sample-code = -1 +split-channels-images.data-set-info-extractor.index-of-data-producer-code = 1 +split-channels-images.data-set-info-extractor.index-of-data-production-date = 0 +split-channels-images.data-set-info-extractor.space-code = ${import-space-code} + +# The extractor class to use for type extraction +split-channels-images.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor +split-channels-images.type-extractor.file-format-type = JPG +split-channels-images.type-extractor.locator-type = RELATIVE_LOCATION +split-channels-images.type-extractor.data-set-type = HCS_IMAGE_OVERVIEW +split-channels-images.type-extractor.is-measured = true + +split-channels-images.storage-processor = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor +split-channels-images.storage-processor.generate-thumbnails = false +# The first specified channel will be blue, the second will be green and the third will be red. +# If there are more channels, combinations of colors will be used. +split-channels-images.storage-processor.channel-codes = GFP, DAPI +split-channels-images.storage-processor.channel-labels = Gfp, Dapi +split-channels-images.storage-processor.well_geometry = 3x3 +split-channels-images.storage-processor.file-extractor = ch.systemsx.cisd.openbis.dss.etl.HCSImageFileExtractor +split-channels-images.storage-processor.data-source = imaging-db + +# --------------------------------------------------------------------------- + +# The directory to watch for incoming data. +image-analysis-results.incoming-dir = ${incoming-root-dir}/incoming-analysis +image-analysis-results.incoming-data-completeness-condition = auto-detection + +# The extractor class to use for code extraction +image-analysis-results.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor +# Separator used to extract the barcode in the data set file name +image-analysis-results.data-set-info-extractor.entity-separator = . +image-analysis-results.data-set-info-extractor.index-of-sample-code = 0 +image-analysis-results.data-set-info-extractor.space-code = ${import-space-code} + +# The extractor class to use for type extraction +image-analysis-results.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor +image-analysis-results.type-extractor.file-format-type = CSV +image-analysis-results.type-extractor.locator-type = RELATIVE_LOCATION +image-analysis-results.type-extractor.data-set-type = HCS_ANALYSIS_WELL_FEATURES +image-analysis-results.type-extractor.is-measured = false + +# The storage processor (IStorageProcessor implementation) +image-analysis-results.storage-processor = ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureVectorStorageProcessor +image-analysis-results.storage-processor.processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor +image-analysis-results.storage-processor.data-source = imaging-db +# semi-colon (;) by default +image-analysis-results.storage-processor.separator = , +image-analysis-results.storage-processor.ignore-comments = true +image-analysis-results.storage-processor.well-name-row = row +image-analysis-results.storage-processor.well-name-col = col +image-analysis-results.storage-processor.well-name-col-is-alphanum = true + +# --- Example configuration of a dropbox for images which are not connected to wells on the plate + +# The directory to watch for incoming data. +#microscopy-dropbox.incoming-dir = ${incoming-root-dir}/incoming-microscopy +#microscopy-dropbox.incoming-data-completeness-condition = auto-detection + +# The extractor class to use for code extraction +#microscopy-dropbox.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor +#microscopy-dropbox.data-set-info-extractor.entity-separator = . +#microscopy-dropbox.data-set-info-extractor.index-of-sample-code = 0 +#microscopy-dropbox.data-set-info-extractor.space-code = ${import-space-code} + +# The extractor class to use for type extraction +#microscopy-dropbox.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor +#microscopy-dropbox.type-extractor.file-format-type = TIFF +#microscopy-dropbox.type-extractor.locator-type = RELATIVE_LOCATION +#microscopy-dropbox.type-extractor.data-set-type = MICROSCOPY_IMAGE +#microscopy-dropbox.type-extractor.is-measured = true + +#microscopy-dropbox.storage-processor = ch.systemsx.cisd.openbis.dss.etl.MicroscopyStorageProcessor +#microscopy-dropbox.storage-processor.file-extractor = ch.systemsx.cisd.openbis.dss.etl.MicroscopyImageFileExtractor +#microscopy-dropbox.storage-processor.data-source = imaging-db +#microscopy-dropbox.storage-processor.channel-names = BLUE, GREEN, RED +#microscopy-dropbox.storage-processor.well_geometry = 2x3 +#microscopy-dropbox.storage-processor.tile_mapping = 1,2,3;4,5,6 + +# --- Microscopy dropbox with a series of images with any names --------------------------- + +# The directory to watch for incoming data. +#microscopy-series-dropbox.incoming-dir = ${incoming-root-dir}/incoming-microscopy-series +#microscopy-series-dropbox.incoming-data-completeness-condition = auto-detection + +# The extractor class to use for code extraction +#microscopy-series-dropbox.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor +#microscopy-series-dropbox.data-set-info-extractor.entity-separator = . +#microscopy-series-dropbox.data-set-info-extractor.index-of-sample-code = 0 +#microscopy-series-dropbox.data-set-info-extractor.space-code = ${import-space-code} + +# The extractor class to use for type extraction +#microscopy-series-dropbox.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor +#microscopy-series-dropbox.type-extractor.file-format-type = TIFF +#microscopy-series-dropbox.type-extractor.locator-type = RELATIVE_LOCATION +#microscopy-series-dropbox.type-extractor.data-set-type = MICROSCOPY_IMAGE +#microscopy-series-dropbox.type-extractor.is-measured = true + +#microscopy-series-dropbox.storage-processor = ch.systemsx.cisd.openbis.dss.etl.MicroscopyBlackboxSeriesStorageProcessor +#microscopy-series-dropbox.storage-processor.data-source = imaging-db diff --git a/screening/dist/installer/dss-service.properties b/screening/dist/installer/dss-service.properties index 9e35be52ef454ed505824fcf4513bca0c41d3aa0..899e9d4950cb4df32242e17d67b4505cefb31698 100644 --- a/screening/dist/installer/dss-service.properties +++ b/screening/dist/installer/dss-service.properties @@ -22,3 +22,5 @@ simple-dropbox.top-level-data-set-handler = ch.systemsx.cisd.openbis.dss.etl.jyt simple-dropbox.script-path = ${incoming-root-dir}/dropboxes/simple-dropbox.py simple-dropbox.storage-processor = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor simple-dropbox.storage-processor.data-source = imaging-db +simple-dropbox.storage-processor.define-channels-per-experiment = false +