Skip to content
Snippets Groups Projects
Commit e346bfcf authored by cramakri's avatar cramakri
Browse files

MINOR : Add dss to v4 of the screening core plugin

SVN: 28336
parent 4385746b
No related branches found
No related tags found
No related merge requests found
Showing
with 172 additions and 0 deletions
#
# Data source for the database storing image meta data.
#
# Variables:
# imaging-database.url-host-part
# The host and optionally port. Default is 'localhost'.
# imaging-database.kind
# Second part of the database name. Default value is 'prod'.
# screening-sql-root-folder
# Path to root folder of SQL scripts. Default value is an empty string.
#
version-holder-class = ch.systemsx.cisd.openbis.dss.etl.ImagingDatabaseVersionHolder
databaseEngineCode = postgresql
basicDatabaseName = imaging
urlHostPart = ${imaging-database.url-host-part:localhost}
databaseKind = ${imaging-database.kind:prod}
scriptFolder = ${screening-sql-root-folder:}sql/imaging
owner =
password =
# Credentials of a database user which is able to create a new database or roles in it.
# 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.
adminUser =
adminPassword =
import os
from ch.systemsx.cisd.openbis.dss.etl.dto.api.v1 import SimpleImageDataConfig
from ch.systemsx.cisd.openbis.dss.etl.dto.api.v1 import ImageMetadata
from ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto import Geometry
SPACE_CODE = "TEST"
PROJECT_CODE = "TEST-PROJECT"
PROJECT_ID = "/%(SPACE_CODE)s/%(PROJECT_CODE)s" % vars()
EXPERIMENT_CODE = "DEMO-EXP-HCS"
EXPERIMENT_ID = "/%(SPACE_CODE)s/%(PROJECT_CODE)s/%(EXPERIMENT_CODE)s" % vars()
PLATE_CODE = "PLATE1"
PLATE_ID = "/%(SPACE_CODE)s/%(PLATE_CODE)s" % vars()
PLATE_GEOMETRY_PROPERTY_CODE = "$PLATE_GEOMETRY"
PLATE_GEOMETRY = "384_WELLS_16X24"
def create_space_if_needed(transaction):
space = transaction.getSpace(SPACE_CODE)
if None == space:
space = transaction.createNewSpace(SPACE_CODE, None)
space.setDescription("A demo space")
def create_project_if_needed(transaction):
project = transaction.getProject(PROJECT_ID)
if None == project:
create_space_if_needed(transaction)
project = transaction.createNewProject(PROJECT_ID)
project.setDescription("A demo project")
def create_experiment_if_needed(transaction):
""" Get the specified experiment or register it if necessary """
exp = transaction.getExperiment(EXPERIMENT_ID)
if None == exp:
create_project_if_needed(transaction)
print 'Creating new experiment : ' + EXPERIMENT_ID
exp = transaction.createNewExperiment(EXPERIMENT_ID, 'SIRNA_HCS')
return exp
def create_plate_if_needed(transaction):
""" Get the specified sample or register it if necessary """
samp = transaction.getSample(PLATE_ID)
if None == samp:
exp = create_experiment_if_needed(transaction)
samp = transaction.createNewSample(PLATE_ID, 'PLATE')
samp.setPropertyValue(PLATE_GEOMETRY_PROPERTY_CODE, PLATE_GEOMETRY)
samp.setExperiment(exp)
return samp
class MyImageDataSetConfig(SimpleImageDataConfig):
def extractImageMetadata(self, imagePath):
basename = os.path.splitext(imagePath)[0]
(plate, well, tile, channelCode) = basename.split("_")
image_tokens = ImageMetadata()
image_tokens.well = well
try:
image_tokens.tileNumber = int(tile)
except ValueError:
raise Exception("Cannot parse field number from '" + tile + "' in '" + basename + "' file name.")
image_tokens.channelCode = channelCode
return image_tokens
def getTileGeometry(self, imageTokens, maxTileNumber):
return Geometry.createFromRowColDimensions(maxTileNumber / 3, 3)
def process(transaction):
incoming = transaction.getIncoming()
if incoming.isDirectory():
imageDataset = MyImageDataSetConfig()
imageDataset.setRawImageDatasetType()
imageDataset.setGenerateThumbnails(True)
imageDataset.setUseImageMagicToGenerateThumbnails(False)
plate = create_plate_if_needed(transaction)
dataset = transaction.createNewImageDataSet(imageDataset, incoming);
dataset.setSample(plate)
transaction.moveFile(incoming.getPath(), dataset);
#
# Drop box for HCS data sets
#
# Variables:
# incoming-root-dir
# Path to the directory which contains incoming directories for drop boxes.
incoming-dir = ${incoming-root-dir}/incoming-hcs
incoming-data-completeness-condition = auto-detection
top-level-data-set-handler = ch.systemsx.cisd.openbis.dss.etl.jython.v2.JythonPlateDataSetHandlerV2
script-path = hcs-dropbox.py
storage-processor = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor
storage-processor.data-source = imaging-db
storage-processor.define-channels-per-experiment = false
#
# Simple drop box which registers any file/folder
#
#
# Variables:
# incoming-root-dir
# Path to the directory which contains incoming directories for drop boxes.
incoming-dir = ${incoming-root-dir}/incoming-simple
incoming-data-completeness-condition = auto-detection
top-level-data-set-handler = ch.systemsx.cisd.etlserver.registrator.api.v2.JythonTopLevelDataSetHandlerV2
script-path = simple-dropbox.py
storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
#! /usr/bin/env python
def process(transaction):
expid = "/TEST/TEST-PROJECT/DEMO-EXP-SIMPLE"
exp = transaction.getExperiment(expid)
if None == exp:
exp = transaction.createNewExperiment(expid, "TEST-EXPERIMENT")
dataSet = transaction.createNewDataSet()
dataSet.setDataSetType("UNKNOWN")
dataSet.setExperiment(exp)
transaction.moveFile(transaction.getIncoming().getAbsolutePath(), dataSet)
class = ch.systemsx.cisd.openbis.dss.generic.server.MergingImagesDownloadServlet
dataset-types = MICROSCOPY_IMAGE
#
# Maintenance task which does a database clean up by deleting all data sets deleted in application server.
# This task assumes that data source 'imaging-db' has been defined.
#
class = ch.systemsx.cisd.openbis.dss.etl.DeleteFromImagingDBMaintenanceTask
# specified in seconds. Here : every day
interval = 86400
data-source = imaging-db
label = Image Analysis Results
class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.ImageAnalysisMergedRowsReportingPlugin
dataset-types = HCS_ANALYSIS_.*WELL_FEATURES
properties-file =
class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.FeatureListsAggregationServicePlugin
label = Features Lists
\ No newline at end of file
class = ch.systemsx.cisd.openbis.dss.generic.server.DssScreeningApiJsonServlet
path = /rmi-datastore-server-screening-api-v1.json/*
class = ch.systemsx.cisd.openbis.dss.generic.server.DssScreeningApiServlet
path = /rmi-datastore-server-screening-api-v1/*
#
# Image service
#
class = ch.systemsx.cisd.openbis.dss.generic.server.MergingImagesDownloadServlet
path = /datastore_server_screening/*
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