New heat map node please! ...also JFreeChart heat map node bugs.

Hi,

I’ve recently been using the JFreeChart heat map node for visualising pairwise distance and linear correlations between large numbers of datasets. It works, but it’s pretty buggy and there are some useful options that could be added. This is therefore a request for a new JS-based heat map node that does more or less the same as the JFreeChart one, but is more stable and will consequently play nice in the web portal.

In terms of JFreeChart node bugs, the biggest one seems to be that the node configuration gets corrupted/lost at the drop of a hat. Opening a workflow that’s been run before often leaves the node in a semi configured state, such that attempting to rerun it will fail. It can’t even be reconfigured, as it can no longer see the input columns. The node has to be removed, re-added and configured. Copying a node from one part of the workflow to another (standard practice for me) is a no-no too. Instead of keeping the config, which may then require tweaking, it gets stuck in the semi-configured state again.

As for missing options, it would be really handy to be able to define the upper and lower bounds of the heat map. For my linear correlation map, I really want my plot to go from -1.0 to 1.0 even though the data only goes down to -0.7 or so. Also being able to define three colours, rather than just two, would be useful. Colouring my heat map so that highly -ve is blue and +ve is red, while zero is white, would certainly make it easier to interpret.

For reference, I’m running KNIME v.3.6.1 with v.3.6.0.v201805031002 of the JFreeChart plugin.

If the node could be updated and ported to JS, it would also allow for some interactivity. Being able to select and highlight sections of the map would be extremely useful for picking out hotspots.

Cheers,

Richard

Hi Richard,

you ask for a new Heatmap node, you get one :wink:
Just kidding, we are currently developing a new JavaScript based HeatMap node which will be released with the Nikolaus Release in December.

I forwarded your thread to the developers so that they can check to include your feature suggestions into the node.

About Jfreechart: I will try to reconstruct this and will come back to you.

Cheers, Iris

Ah, that’ll be a nice Christmas present.

If you can’t reproduce the bug, I’ll see if I can get an example workflow sorted.

Cheers,

Richard

Hi Richard,

Probably my old heatmap node cannot compete with the new KNIME node, but might worth a try (it does not remember the settings, but does support HiLite as I remember and the colors can be adjusted with great details, there is also a heatmap with dendrogram node). Update site of the build compatible with current KNIME: https://drive.google.com/folderview?id=0B4uWhAEragZ8eXl0aFlCdDlkbkU&usp=sharing
Cheers, gabor

Hi Gabor,
KNIME didn’t find any plugins in those update sites.
Cheers, Richard

Hi Richard,

I apologize, should have provided more detailed install instructions.
So from the shared folder the temporary_HiTS_util_update_site.zip should be downloaded and added as a zip file.
After you have to uncheck the Group items by category option:


After just need to go through the install and restart KNIME.
Here is the Heatmap node in action (I have already modified the third columns colors, but as the screenshot shows all columns can be modified with one configuration):

(It seems the heatmap with dendrogram node no longer works:

DEBUG Dendrogram with Heatmap 0:6 Unable to clone input data at port 1 (Cluster tree): No value present
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
at org.knime.core.node.Node.copyPortObject(Node.java:1371)
at org.knime.core.node.Node.execute(Node.java:948)
at org.knime.core.node.workflow.NativeNodeContainer.performExecuteNode(NativeNodeContainer.java:561)
at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:95)
at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:179)
at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:110)
at org.knime.core.util.ThreadUtils$RunnableWithContextImpl.runWithContext(ThreadUtils.java:328)
at org.knime.core.util.ThreadUtils$RunnableWithContext.run(ThreadUtils.java:204)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:123)
at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:246)

)

Edit: Maybe just the Leaf Ordering node’s output is now incompatible it worked without it.

That was the step I was missing, thanks.

Hi Iris,

I had a go with the nightly build of the new JavaScript heatmap. It doesn’t currently accept distance or list cells as input, as the JFreeChart one does. Would it be possible to add that option before release?

Richard

Thank you for your question. So far, we have not planned to enable distance or list cells as input. You would have to convert this into a table (e.g. using the nodes Distance Matrix Pair Extractor and followed by Pivoting). Is that an option for you?

That’s feasible, but a lot less convenient or intuitive. Also, for large distance matrices that’ll result in quite large tables. I can understand why distance cells might not be easy to permit as input, but list cells would easily translate into a JSON/JavaScript object(?)

I talked to our developers and we will include that for future improvements. Unfortunately, this is unlikely to be finished before the release. Thank you for your feedback!

1 Like