// $HeadURL$
// $Id$
//
// Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.screensaver.service.cellhts2;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.IfProfileValue;
import edu.harvard.med.screensaver.analysis.cellhts2.CellHTS2;
import edu.harvard.med.screensaver.analysis.cellhts2.NormalizePlatesMethod;
import edu.harvard.med.screensaver.analysis.cellhts2.NormalizePlatesNegControls;
import edu.harvard.med.screensaver.analysis.cellhts2.NormalizePlatesScale;
import edu.harvard.med.screensaver.analysis.cellhts2.RMethod;
import edu.harvard.med.screensaver.db.DAOTransaction;
import edu.harvard.med.screensaver.model.libraries.Library;
import edu.harvard.med.screensaver.model.screenresults.ScreenResult;
import edu.harvard.med.screensaver.model.screens.Screen;
import edu.harvard.med.screensaver.model.screens.ScreenType;
import edu.harvard.med.screensaver.test.AbstractSpringPersistenceTest;
import edu.harvard.med.screensaver.test.MakeDummyEntities;
@IfProfileValue(name = "screensaver.ui.feature.cellHTS2", value = "true")
public class CellHts2AnnotatorTest extends AbstractSpringPersistenceTest
{
// static members
private static Logger log = Logger.getLogger(CellHts2AnnotatorTest.class);
@Autowired
protected CellHts2Annotator cellHts2Annotator;
/**
* Note: requires Rserve daemon to be running and listening at localhost:6311,
* with cellHTS2 and cellHTS2Db packages available
*/
// TODO: use a mock CellHts2Annotator
public void testNormalizePlates()
{
genericEntityDao.doInTransaction(new DAOTransaction() {
public void runTransaction() {
// note: by testing with library id=2, we test the 'plate number to sequence number' mapping code
Library library = MakeDummyEntities.makeDummyLibrary(2, ScreenType.SMALL_MOLECULE, 2);
Screen screen = MakeDummyEntities.makeDummyScreen(1, ScreenType.SMALL_MOLECULE);
MakeDummyEntities.makeDummyScreenResult(screen, library);
genericEntityDao.persistEntity(library);
genericEntityDao.persistEntity(screen);
}
});
ScreenResult screenResult =
genericEntityDao.findEntityByProperty(Screen.class,
Screen.facilityId.getPropertyName(),
"1",
true,
Screen.screenResult.to(ScreenResult.dataColumns))
.getScreenResult();
assertEquals("pre-cellHTS raw DataColumn count", 8, screenResult.getDataColumns().size());
cellHts2Annotator.runCellhts2( RMethod.NORMALIZE_PLATES,
screenResult,
"testAnalysis",
NormalizePlatesMethod.MEDIAN,
NormalizePlatesNegControls.NEG,
NormalizePlatesScale.ADDITIVE,
null,
null,
true,
".",
null);
// load again, to ensure we're testing the persisted version of the data
screenResult =
genericEntityDao.findEntityByProperty(Screen.class,
Screen.facilityId.getPropertyName(),
"1",
true,
Screen.screenResult.to(ScreenResult.dataColumns))
.getScreenResult();
assertEquals("post-cellHTS raw DataColumn count", 10, screenResult.getDataColumns().size());
for (int i = 8; i < 10; ++i ) {
assertTrue("DataColumn " + i + " + is cellHTS-generated",
screenResult.getDataColumnsList().get(i).getName().contains(CellHTS2.CELLHTS2_DATA_COLUMN_PREFIX));
}
}
}