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


#1

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


#2

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


#3

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


#4

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


#5

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


#6

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.


#7

That was the step I was missing, thanks.