G'day,
> I am struggling to define a FunctionType that will correctly position the
> labels when logarithmic scaling is applied.
I managed to solve this using the following code to include a
LogCoordinateSystem in the range of the annotation function:
// Height Types.
final RealType heightType = RealType.getRealType("Height");
final RealType logHeightType = RealType.getRealType("LogHeight",
CommonUnit.promiscuous);
heightTupleType = new RealTupleType(
heightType, new LogCoordinateSystem(new
RealTupleType(logHeightType)), null);
annotationType = TextType.getTextType("Annotation");
annotationTupleType = new TupleType(new MathType[]{heightTupleType,
annotationType});
// Create a function from domain (retention time and m/z) to text
annotation.
annotationFunction = new FunctionType(domainTuple, annotationTupleType);
The full code is in the project svn repository:
http://mzmine.svn.sourceforge.net/viewvc/mzmine/branches/syngenta_normalize_slider/src/net/sf/mzmine/modules/visualization/threed/ThreeDDisplay.java?revision=2566&view=markup
The final piece of the puzzle is applying logarithmic scaling to the
heights of bounding boxes that are used to highlight individual surface
peaks. The box heights match the peak heights and are created using
GriddedSets:
pointTupletype = new RealTupleType(retentionTimeType, mzType, heightType);
// Create the box set.
return GriddedSet.create(
pointTupleType,
new float[][]{
{rtMin, rtMax, rtMin, rtMax, rtMin, rtMax, rtMin, rtMax,
rtMin, rtMin, rtMin, rtMin, rtMax, rtMax, rtMax, rtMax,},
{mzMin, mzMin, mzMin, mzMin, mzMax, mzMax, mzMax, mzMax,
mzMin, mzMax, mzMin, mzMax, mzMin, mzMax, mzMin, mzMax},
{heightMin, heightMin, heightMax, heightMax, heightMax,
heightMax, heightMin, heightMin, heightMin, heightMin,
heightMax, heightMax, heightMax, heightMax, heightMin,
heightMin}},
new int[]{2, 8});
The boxes are rendered correctly for linear scaling of the height axis
but not for logarithmic scaling. Presumably to get this working the
GriddedSet (or similar) must reference the LogCoordinateSystem defined
earlier but how?
I'd be grateful for any suggestions.
Code for this class is here:
http://mzmine.svn.sourceforge.net/viewvc/mzmine/branches/syngenta_normalize_slider/src/net/sf/mzmine/modules/visualization/threed/ThreeDPeakCells.java?revision=2566&view=markup
Thanks,
Chris.
This message may contain confidential information. If you are not the designated recipient, please notify the sender immediately, and delete the original and any copies. Any use of the message by you is prohibited.