use of ubic.basecode.graphics.ColorMatrix in project Gemma by PavlidisLab.
the class ExperimentalDesignVisualizationServiceImpl method plotExperimentalDesign.
/**
* Test method for now, shows how this can be used.
*
* @param e ee
*/
// Test method for now, shows how this can be used.
@SuppressWarnings("unused")
protected void plotExperimentalDesign(ExpressionExperiment e) {
LinkedHashMap<BioAssayValueObject, LinkedHashMap<ExperimentalFactor, Double>> layout = this.getExperimentalDesignLayout(e);
List<String> efStrings = new ArrayList<>();
List<String> baStrings = new ArrayList<>();
List<double[]> rows = new ArrayList<>();
boolean first = true;
int i = 0;
for (BioAssayValueObject ba : layout.keySet()) {
baStrings.add(ba.getName());
int j = 0;
for (ExperimentalFactor ef : layout.get(ba).keySet()) {
if (first) {
double[] nextRow = new double[layout.size()];
rows.add(nextRow);
// make sure they are unique.
efStrings.add(ef.getName() + " ( id=" + ef.getId() + ")");
}
double d = layout.get(ba).get(ef);
rows.get(j)[i] = d;
j++;
}
i++;
first = false;
}
double[][] mat = rows.toArray(new double[][] {});
DoubleMatrix<String, String> data = DoubleMatrixFactory.dense(mat);
data.setRowNames(efStrings);
data.setColumnNames(baStrings);
ColorMatrix<String, String> cm = new ColorMatrix<>(data, ColorMap.GREENRED_COLORMAP, Color.GRAY);
try {
this.writeImage(cm, File.createTempFile(e.getShortName() + "_", ".png"));
} catch (IOException e1) {
throw new RuntimeException(e1);
}
}
use of ubic.basecode.graphics.ColorMatrix in project Gemma by PavlidisLab.
the class ExpressionExperimentQCController method visualizeCorrMat.
/**
* @param id of experiment
* @param size Multiplier on the cell size. 1 or null for standard small size.
* @param text if true, output a tabbed file instead of a png
* @param showLabels if the row and column labels of the matrix should be shown.
* @param os response output stream
*/
@RequestMapping("/expressionExperiment/visualizeCorrMat.html")
public ModelAndView visualizeCorrMat(Long id, Double size, String contrVal, Boolean text, Boolean showLabels, Boolean forceShowLabels, OutputStream os) throws Exception {
if (id == null) {
log.warn("No id!");
return null;
}
ExpressionExperiment ee = expressionExperimentService.load(id);
if (ee == null) {
log.warn("Could not load experiment with id " + id);
return null;
}
DoubleMatrix<BioAssay, BioAssay> omatrix = sampleCoexpressionMatrixService.findOrCreate(ee);
List<String> stringNames = new ArrayList<>();
for (BioAssay ba : omatrix.getRowNames()) {
stringNames.add(ba.getName() + " ID=" + ba.getId());
}
DoubleMatrix<String, String> matrix = new DenseDoubleMatrix<>(omatrix.getRawMatrix());
matrix.setRowNames(stringNames);
matrix.setColumnNames(stringNames);
if (text != null && text) {
StringWriter s = new StringWriter();
MatrixWriter<String, String> mw = new MatrixWriter<>(s, new DecimalFormat("#.##"));
mw.writeMatrix(matrix, true);
ModelAndView mav = new ModelAndView(new TextView());
mav.addObject(TextView.TEXT_PARAM, s.toString());
return mav;
}
/*
* Blank out the diagonal so it doesn't affect the colour scale.
*/
for (int i = 0; i < matrix.rows(); i++) {
matrix.set(i, i, Double.NaN);
}
ColorMatrix<String, String> cm = new ColorMatrix<>(matrix);
this.cleanNames(matrix);
int row = matrix.rows();
int cellsize = (int) Math.min(ExpressionExperimentQCController.MAX_HEATMAP_CELLSIZE, Math.max(1, size * ExpressionExperimentQCController.DEFAULT_QC_IMAGE_SIZE_PX / row));
MatrixDisplay<String, String> writer = new MatrixDisplay<>(cm);
boolean reallyShowLabels;
int minimumCellSizeForText = 9;
if (forceShowLabels != null && forceShowLabels) {
cellsize = Math.min(ExpressionExperimentQCController.MAX_HEATMAP_CELLSIZE, minimumCellSizeForText);
reallyShowLabels = true;
} else {
reallyShowLabels = showLabels != null && (showLabels && cellsize >= minimumCellSizeForText);
}
writer.setCellSize(new Dimension(cellsize, cellsize));
boolean showScalebar = size > 2;
writer.writeToPng(cm, os, reallyShowLabels, showScalebar);
// nothing to return;
return null;
}
Aggregations