diff --git a/screening/sourceTest/core-plugins/AggregatedFeatureVectorsV2Test/1/dss/reporting-plugins/example-screening-jython-db-modifying-aggregation-service/plugin.properties b/screening/sourceTest/core-plugins/AggregatedFeatureVectorsV2Test/1/dss/reporting-plugins/example-screening-jython-db-modifying-aggregation-service/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..bc318b3ee39239929ac8845ab1cede27033f7c93 --- /dev/null +++ b/screening/sourceTest/core-plugins/AggregatedFeatureVectorsV2Test/1/dss/reporting-plugins/example-screening-jython-db-modifying-aggregation-service/plugin.properties @@ -0,0 +1,3 @@ +label = Test Screening Db Modifying Jython Aggregation Reporting +class = ch.systemsx.cisd.openbis.dss.screening.server.plugins.jython.ScreeningJythonBasedDbModifyingAggregationServiceReportingPlugin +script-path = script.py \ No newline at end of file diff --git a/screening/sourceTest/core-plugins/AggregatedFeatureVectorsV2Test/1/dss/reporting-plugins/example-screening-jython-db-modifying-aggregation-service/script.py b/screening/sourceTest/core-plugins/AggregatedFeatureVectorsV2Test/1/dss/reporting-plugins/example-screening-jython-db-modifying-aggregation-service/script.py new file mode 100644 index 0000000000000000000000000000000000000000..facf1b55cafd31cd4462b8e9030da79dd344a5f5 --- /dev/null +++ b/screening/sourceTest/core-plugins/AggregatedFeatureVectorsV2Test/1/dss/reporting-plugins/example-screening-jython-db-modifying-aggregation-service/script.py @@ -0,0 +1,88 @@ +from ch.systemsx.cisd.openbis.dss.etl.dto.api.v2 import SimpleFeatureVectorDataConfig + +PLATE_GEOMETRY_PROPERTY_CODE = "$PLATE_GEOMETRY" +PLATE_GEOMETRY = "384_WELLS_16X24" + +def create_experiment(tr): + space = tr.getSpace("TEST") + if space == None: + space = tr.createNewSpace("TEST", "etlserver") + project = tr.getProject("/TEST/TEST-PROJECT") + if project == None: + project = tr.createNewProject("/TEST/TEST-PROJECT") + expid = "/TEST/TEST-PROJECT/AGGREGATED_FEATURES_EXP" + + exp = tr.createNewExperiment(expid, 'SIRNA_HCS') + exp.setPropertyValue("DESCRIPTION", "Test experiment") + + return exp + +def create_plate(tr, experiment, plateCode, gene): + plateId = "/TEST/" + plateCode + plate = tr.createNewSample(plateId, 'PLATE') + plate.setPropertyValue(PLATE_GEOMETRY_PROPERTY_CODE, PLATE_GEOMETRY) + plate.setExperiment(experiment) + + wellA1 = tr.createNewSample(plate.getSampleIdentifier() + ":A1", "SIRNA_WELL") + wellA1.setPropertyValue("GENE", gene.getMaterialIdentifier()) + wellA1.setContainer(plate) + + wellA2 = tr.createNewSample(plate.getSampleIdentifier() + ":A2", "SIRNA_WELL") + wellA2.setPropertyValue("GENE", gene.getMaterialIdentifier()) + wellA2.setContainer(plate) + + return plate + + +def create_analysis_data_set(tr, plate, config, analysis_procedure, ds_file): + analysis_data_set = tr.createNewFeatureVectorDataSet(config, None) + analysis_data_set.setSample(plate) + analysis_data_set.setAnalysisProcedure(analysis_procedure) + tr.createNewFile(analysis_data_set, ds_file) + +def create_dataset_with_features1(tr, experiment, gene): + plate1 = create_plate(tr, experiment, "PLATE1", gene) + config = SimpleFeatureVectorDataConfig() + builder = config.featuresBuilder + + featureX = builder.defineFeature("X") + featureX.addValue(1, 1, "1") + featureX.addValue(1, 2, "2") + + featureY = builder.defineFeature("Y") + featureY.addValue(1, 1, "3") + featureY.addValue(1, 2, "2") + + create_analysis_data_set(tr, plate1, config, "p1", "data-set-1.csv") + +def create_dataset_with_features2(tr, experiment, gene): + plate2 = create_plate(tr, experiment, "PLATE2", gene) + config = SimpleFeatureVectorDataConfig() + builder = config.featuresBuilder + + featureA = builder.defineFeature("A") + featureA.addValue(1, 1, "10") + featureA.addValue(1, 2, "20") + + featureB = builder.defineFeature("B") + featureB.addValue(1, 1, "2") + featureB.addValue(1, 2, "NaN") + + featureX = builder.defineFeature("X") + featureX.addValue(1, 1, "5") + featureX.addValue(1, 2, "6") + + create_analysis_data_set(tr, plate2, config, "p2", "data-set-2.file") + +def process(transaction, parameters, tableBuilder): + experiment = create_experiment(transaction) + geneCode = "G" + geneG = transaction.createNewMaterial(geneCode, "GENE") + create_dataset_with_features1(transaction, experiment, geneG) + create_dataset_with_features2(transaction, experiment, geneG) + + tableBuilder.addHeader("CODE") + tableBuilder.addHeader("IDENTIFIER") + row = tableBuilder.addRow() + row.setCell("CODE", geneCode) + row.setCell("IDENTIFIER", geneCode) diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregationServiceAggregatedFeatureVectorsTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregationServiceAggregatedFeatureVectorsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..1bbbbceb663d00dcb4e0860cb9d0189dafa2e972 --- /dev/null +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregationServiceAggregatedFeatureVectorsTest.java @@ -0,0 +1,66 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.screening.systemtests; + +import java.util.HashMap; + +import org.springframework.mock.web.MockHttpServletRequest; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import ch.systemsx.cisd.common.servlet.SpringRequestContextProvider; +import ch.systemsx.cisd.openbis.plugin.query.server.api.v1.ResourceNames; +import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.IQueryApiServer; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientService; + +/** + * @author Chandrasekhar Ramakrishnan + */ +@Test(groups = + { "slow", "systemtest" }) +public class AggregationServiceAggregatedFeatureVectorsTest extends AbstractScreeningSystemTestCase +{ + private IQueryApiServer queryApi; + + private IScreeningClientService screeningClientService; + + private MockHttpServletRequest request; + + private String sessionToken; + + @BeforeMethod + public void setUp() throws Exception + { + screeningClientService = + (IScreeningClientService) applicationContext + .getBean(ch.systemsx.cisd.openbis.plugin.screening.shared.ResourceNames.SCREENING_PLUGIN_SERVICE); + request = new MockHttpServletRequest(); + ((SpringRequestContextProvider) applicationContext.getBean("request-context-provider")) + .setRequest(request); + sessionToken = screeningClientService.tryToLogin("admin", "a").getSessionID(); + } + + @Test + public void testRegisteringFeatureVectors() throws Exception + { + queryApi = (IQueryApiServer) applicationContext.getBean(ResourceNames.QUERY_PLUGIN_SERVER); + queryApi.createReportFromAggregationService(sessionToken, "DSS-SCREENING", + "example-screening-jython-db-modifying-aggregation-service", + new HashMap<String, Object>()); + } + +}