cytoscape / diffusion

A Cytoscape app to interface with the heat diffusion service
3 stars 5 forks source link

Deleting columns throws an exception, Column still present in Results Panel #31

Open BrettJSettle opened 6 years ago

BrettJSettle commented 6 years ago

Deleting one of the diffusion output columns in the node table causes the Table browser (and Output Panel) to act strangely.

java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.cytoscape.event.internal.CyListenerAdapter.fireEvent(CyListenerAdapter.java:120) at org.cytoscape.event.internal.CyEventHelperImpl.fireEvent(CyEventHelperImpl.java:79) at org.cytoscape.session.internal.CySessionManagerImpl.setCurrentSession(CySessionManagerImpl.java:247) at org.cytoscape.task.internal.session.OpenSessionTask$OpenSessionWithoutWarningTask.changeCurrentSession(OpenSessionTask.java:156) at org.cytoscape.task.internal.session.OpenSessionTask$OpenSessionWithoutWarningTask.run(OpenSessionTask.java:143) at org.cytoscape.work.internal.sync.DelegateTask.run(DelegateTask.java:72) at org.cytoscape.work.internal.task.JDialogTaskManager$TaskRunnable.innerRun(JDialogTaskManager.java:326) at org.cytoscape.work.internal.task.JDialogTaskManager$TaskRunnable.run(JDialogTaskManager.java:355) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at org.cytoscape.model.internal.CyTableImpl.getMatchingRows(CyTableImpl.java:575) at org.cytoscape.diffusion.internal.util.DiffusionResult.getFirstMatchingRow(DiffusionResult.java:82) at org.cytoscape.diffusion.internal.util.DiffusionResult.getRowForRank(DiffusionResult.java:76) at org.cytoscape.diffusion.internal.util.DiffusionResult.rankToHeat(DiffusionResult.java:58) at org.cytoscape.diffusion.internal.util.DiffusionResult.getMaxHeat(DiffusionResult.java:34) at org.cytoscape.diffusion.internal.ui.HeatSelectionPanel.createSlider(HeatSelectionPanel.java:33) at org.cytoscape.diffusion.internal.ui.AbstractSliderPanel.(AbstractSliderPanel.java:61) at org.cytoscape.diffusion.internal.ui.HeatSelectionPanel.(HeatSelectionPanel.java:20) at org.cytoscape.diffusion.internal.ui.OutputPanel.columnNameSelected(OutputPanel.java:220) at org.cytoscape.diffusion.internal.ui.OutputPanel.access$200(OutputPanel.java:46) at org.cytoscape.diffusion.internal.ui.OutputPanel$1.actionPerformed(OutputPanel.java:201) at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1258) at javax.swing.JComboBox.contentsChanged(JComboBox.java:1332) at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118) at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93) at javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:131) at javax.swing.JComboBox.addItem(JComboBox.java:716) at org.cytoscape.diffusion.internal.ui.OutputPanel.configureColumnNameComboBox(OutputPanel.java:191) at org.cytoscape.diffusion.internal.ui.OutputPanel.handleEvent(OutputPanel.java:97) ... 16 more

Diffusion needs to better handle the output columns. Both rank and heat are handled as a pair, but should be handled independently in case one is deleted.