/** * Create new test directory within the system-defined unit test master directory. The newly * created directory will be a sub-directory of the master directory. * * @param dirName Directory name to be created within the master directory. * @return Absolute path name of test directory. */ public static String newTestDirectory(final String dirName) { String tempDir = UnitTestUtils.getUnitTestProperty("temp.dir"); File dir = new File(tempDir); if (!dir.exists()) { throw new RuntimeException("Please create directory '" + tempDir + "' for unit testing"); } String testDirName = tempDir + "/" + dirName; File testDir = new File(testDirName); if (!testDir.exists()) { testDir.mkdir(); } return testDirName; }
/** * Tester for <code>IdeogramPlotPainter</code>. * * @author dhall */ public final class IdeogramPlotPainterTester extends TestCase { // =============================== // Constants // =============================== /** Name of temporary directory for storing generated ata files. This is not an absolute path. */ private static final String TEMP_DIR_NAME = "ideogram_plot_painter_test_dir"; /** * Path to temporary directory for storing data files. It will be a subdirectory of the main unit * test temporary directory specified by the property 'temp.dir' in 'unit_test.properties.' */ private static final String TEMP_DIR_PATH = UnitTestUtils.createUnitTestDirectory(TEMP_DIR_NAME).getAbsolutePath(); /** Number of bioassays to generate in tests. */ private static final int NUM_BIO_ASSAYS = 2; /** Number of chromosomes in tests. */ private static final int NUM_CHROMOSOMES = 5; /** Number of experiments in tests. */ private static final int NUM_EXPERIMENTS = 2; /** Number of array datum per chromosome in. */ private static final int NUM_DATUM_PER_CHROMOSOME = 50; /** Length of chromosome in base pairs. */ private static final long CHROM_LENGTH = 100000000; /** Number of cytobands. */ private static final int NUM_CYTOBANDS = 10; // =================================== // Test cases // =================================== /** * Test paintIdeogramPlot() method. * * @throws Exception if something bad happens */ public void testPaintIdeogramPlot() throws Exception { // Create test experiments long gap = CHROM_LENGTH / NUM_DATUM_PER_CHROMOSOME; ExperimentGenerator expGen = new ExperimentGenerator(gap); Collection<Experiment> experiments = new ArrayList<Experiment>(); for (int i = 0; i < NUM_EXPERIMENTS; i++) { Experiment exp = expGen.newInMemoryExperiment(NUM_BIO_ASSAYS, NUM_CHROMOSOMES, NUM_DATUM_PER_CHROMOSOME); exp.setQuantitationType(QuantitationType.COPY_NUMBER); experiments.add(exp); for (BioAssay ba : exp.getBioAssays()) { ba.setColor(Color.BLUE); } } for (int i = 0; i < NUM_EXPERIMENTS; i++) { Experiment exp = expGen.newInMemoryExperiment(NUM_BIO_ASSAYS, NUM_CHROMOSOMES, NUM_DATUM_PER_CHROMOSOME); exp.setQuantitationType(QuantitationType.FOLD_CHANGE); experiments.add(exp); for (BioAssay ba : exp.getBioAssays()) { ba.setColor(Color.RED); } } // Create plot parameters IdeogramPlotParameters params = new IdeogramPlotParameters(); for (int i = 1; i <= NUM_CHROMOSOMES; i++) { params.add(new GenomeInterval((short) i, 1, CHROM_LENGTH)); } params.setIdeogramSize(ChromosomeIdeogramSize.MEDIUM); params.setNumPlotsPerRow(2); // Create plotting panel RasterFileTestPlotPanel panel = new RasterFileTestPlotPanel(TEMP_DIR_PATH); // Create chromosome array data getter InMemoryChromosomeArrayDataGetter cadg = new InMemoryChromosomeArrayDataGetter(); // Instantiate ideogram plot painter IdeogramPlotPainter painter = new IdeogramPlotPainter(cadg); // Create cytologial map DAO CytologicalMapDaoImpl cDao = new CytologicalMapDaoImpl(CHROM_LENGTH, NUM_CYTOBANDS); painter.setCytologicalMapDao(cDao); // Create plot painter.paintPlot(panel, experiments, params); // Add some additional reference widgets panel.add( new Caption("Left", null, Orientation.HORIZONTAL, false, panel.getDrawingCanvas()), HorizontalAlignment.LEFT_OF, VerticalAlignment.CENTERED); panel.add( new Caption("Right", null, Orientation.HORIZONTAL, false, panel.getDrawingCanvas()), HorizontalAlignment.RIGHT_OF, VerticalAlignment.CENTERED); // Output graphics to file panel.toPngFile("plot-in-memory.png"); } }