CEMPD / VERDI

This is the repo for the VERDI project, written in java.
GNU General Public License v3.0
17 stars 13 forks source link

MPAS scatterplot tool does not work from command line #255

Open cwsimmon opened 3 years ago

cwsimmon commented 3 years ago

Reported by Russ Bullock

The scatterplot tool does not work for MPAS model data. While the tool does open a window to obtain user input for the formulas to be used for the domain and range of the plot, hitting the OK button to accept those choices results in no action other than a constant dotted box highlighting the scatter plot tool option. The following error is written to the command prompt window:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "anl.verdi.data.CoordAxis.getRange()" because the return value of "anl.verdi.data.Axes.getCellAxis()" is null

yadongxuEPA commented 3 years ago

To Reproduce Steps to reproduce the behavior:

1) Load the 2-meter temperature data file "t2m_only.2016-07-04.nc" into verdi and create two formulas:" t2m[1]" and "2t2m[1]". 2) On the top menu bar, click on "Scatter Plot". 3) In the pop-up window, assign "t2m[1]" to X-Axis and "2t2m[1]" to Y_Axis, then click "OK".

Expected behavior A scatter plot showing the relationship between the above two selected formulas should be correctly displayed.

Tested with VERDI_2.1_linux64_20210707.tar.gz and VERDI_2.1_win64_20210707.zip and found that the scatter plot was actually displayed correctly (Shown as below). issue_255_VERDI_testing_1_07072021

However, the following error messages were written to the command prompt window when I attempted to update the time step: ucar.ma2.InvalidRangeException: Bad ranges [] length at ucar.ma2.Index.section(Index.java:243) at ucar.ma2.Array.section(Array.java:600) at anl.verdi.data.DataUtilities.minMax(DataUtilities.java:370) at anl.verdi.plot.types.ScatterPlot.updateTimeStepLayer(ScatterPlot.java:351) at anl.verdi.plot.types.ScatterPlot$1.stateChanged(ScatterPlot.java:216) at java.desktop/javax.swing.JSpinner.fireStateChanged(JSpinner.java:461) at java.desktop/javax.swing.JSpinner$ModelListener.stateChanged(JSpinner.java:388) at java.desktop/javax.swing.AbstractSpinnerModel.fireStateChanged(AbstractSpinnerModel.java:120) at java.desktop/javax.swing.SpinnerNumberModel.setValue(SpinnerNumberModel.java:460) at java.desktop/javax.swing.JSpinner.setValue(JSpinner.java:355) at java.desktop/javax.swing.plaf.basic.BasicSpinnerUI$ArrowButtonHandler.actionPerformed(BasicSpinnerUI.java:668) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6379) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

yadongxuEPA commented 2 years ago

Retested with VERDI_2.1_linux64_20211103.tar.gz on Atmos, the same error messages persist when I tried to change the time steps.

yadongxuEPA commented 2 years ago

Retested with VERDI_2.1.4_linux64_20220706.tar.gz on Atmos, found that this issue has not resolved. Steps to reproduce the behavior: 1.Load the 2-meter temperature data file "t2m_only.2016-07-04.nc" into verdi and create two formulas:" t2m[1]" and "2*t2m[1]". 2.On the top menu bar, click on "Scatter Plot".

  1. In the pop-up window, assign "t2m[1]" to X-Axis and "2*t2m[1]" to Y_Axis, then click "OK". VERDI_testing_issue_255_2 No scatter plot was displayed, the following error messages was shown in the command window. VERDI_testing_issue_255_1
lizadams commented 2 years ago

Re-tested using VERDI_2.1.4_linux64_20220720.tar.gz There is still an error.

./verdi.sh -f $cwd/data/model/t2m_only.nc -s "t2m[1]"

While initially, this created a plot, after I tried to re-run VERDI to load this dataset and variable, the scatter plot option was greyed out.

Screen Shot 2022-07-20 at 11 21 26 AM

This is the error that I am seeing when I run using the command line:

./verdi.sh -f $cwd/data/model/t2m_only.nc -s "t2m[1]" -scatter "t2m[1]" "t2m[1]"

in netcdfdataset.java openDataset 1 arguments in netcdfdataset.java openDataset 3 arguments in netcdfdataset.java ready to return openDataset 5 arguments 2022.07.20 15:16:22.038 [main] ERROR anl.verdi.core.VerdiPlugin - Error java.lang.IllegalArgumentException: Invalid call to DataFrameIndex.setXY( x = 1 ... ) at anl.verdi.data.DataFrameIndex.setXY(DataFrameIndex.java:118) ~[?:?] at anl.verdi.plot.data.ScatterXYDataset$FrameData.getValue(ScatterXYDataset.java:79) ~[?:?] at anl.verdi.plot.data.ScatterXYDataset.getXValue(ScatterXYDataset.java:189) ~[?:?] at org.jfree.data.general.DatasetUtilities.iterateDomainBounds(DatasetUtilities.java:759) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:663) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:638) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.chart.plot.XYPlot.getDataRange(XYPlot.java:4466) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.chart.axis.NumberAxis.autoAdjustRange(NumberAxis.java:433) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.chart.axis.NumberAxis.configure(NumberAxis.java:415) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.chart.axis.Axis.setPlot(Axis.java:1043) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.chart.plot.XYPlot.(XYPlot.java:668) ~[jfreechart-1.0.19.jar:1.0.19] at org.jfree.chart.ChartFactory.createScatterPlot(ChartFactory.java:1692) ~[jfreechart-1.0.19.jar:1.0.19] at anl.verdi.plot.types.ScatterPlot.createChart(ScatterPlot.java:373) ~[core.jar:?] at anl.verdi.plot.types.ScatterPlot.(ScatterPlot.java:155) ~[core.jar:?] at anl.verdi.plot.types.ScatterPlot.(ScatterPlot.java:132) ~[core.jar:?] at anl.verdi.plot.gui.PlotFactory.getScatterPlot(PlotFactory.java:56) ~[core.jar:?] at anl.verdi.plot.gui.ScatterPlotCreator.createPlotFromCommandLine(ScatterPlotCreator.java:93) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler$28.run(ScriptHandler.java:1013) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler.handleOptions(ScriptHandler.java:1519) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler.run(ScriptHandler.java:167) ~[core.jar:?] at anl.verdi.core.VerdiPlugin.run(VerdiPlugin.java:168) [core.jar:?] at saf.core.runtime.CorePlugin.runApplicationRunnable(CorePlugin.java:93) [saf.core.runtime.jar:?] at saf.core.runtime.CorePlugin.run(CorePlugin.java:48) [saf.core.runtime.jar:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at saf.core.runtime.Boot.run(Boot.java:178) [saf.core.runtime.jar:?] at saf.core.runtime.Boot.main(Boot.java:388) [saf.core.runtime.jar:?]

I verified that this syntax is correct by using the CCTM input file rather than the MPAS input file.

./verdi.sh -f $cwd/data/model/CCTM46_P16.baseO2a.36k.O3MAX -s "O3[1]" -s "NO2[1]" -scatter "O3[1]" "NO2[1]"
Screen Shot 2022-07-20 at 11 19 06 AM

I also tried using mac version VERDI_2.1.4_mac_20220720.tar.gz

 ./verdi.command -f $cwd/data/model/t2m_only.nc -s "t2m[1]"

At first the scatter plot option was greyed out. When I added another dataset and variable, then reselected the t2m variable, then the scatter plot option was available. I was able to create the scatter plot by selecting t2m[1] for X-Axis and t2m[1] for Y-Axis. When I tried to increment the timestep by using the spinner, then the following errors popped up. The scatter plot does seem to be giving unique scatter plot values for each timestep. I am including a few screenshots for timestep 1, 2 and 3.

Screen Shot 2022-07-20 at 11 28 21 AM Screen Shot 2022-07-20 at 11 28 32 AM Screen Shot 2022-07-20 at 11 28 43 AM

in netcdfdataset.java openDataset 1 arguments in netcdfdataset.java openDataset 3 arguments in netcdfdataset.java ready to return openDataset 5 arguments ucar.ma2.InvalidRangeException: Bad ranges [] length at ucar.ma2.Index.section(Index.java:243) at ucar.ma2.Array.section(Array.java:600) at anl.verdi.data.DataUtilities.minMax(DataUtilities.java:370) at anl.verdi.plot.types.ScatterPlot.updateTimeStepLayer(ScatterPlot.java:334) at anl.verdi.plot.types.ScatterPlot$1.stateChanged(ScatterPlot.java:216) at java.desktop/javax.swing.JSpinner.fireStateChanged(JSpinner.java:492) at java.desktop/javax.swing.JSpinner$ModelListener.stateChanged(JSpinner.java:419) at java.desktop/javax.swing.AbstractSpinnerModel.fireStateChanged(AbstractSpinnerModel.java:124) at java.desktop/javax.swing.SpinnerNumberModel.setValue(SpinnerNumberModel.java:460) at java.desktop/javax.swing.JSpinner.setValue(JSpinner.java:386) at java.desktop/com.apple.laf.AquaSpinnerUI$ArrowButtonHandler.actionPerformed(AquaSpinnerUI.java:439) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ucar.ma2.InvalidRangeException: Bad ranges [] length at ucar.ma2.Index.section(Index.java:243) at ucar.ma2.Array.section(Array.java:600) at anl.verdi.data.DataUtilities.minMax(DataUtilities.java:370) at anl.verdi.plot.types.ScatterPlot.updateTimeStepLayer(ScatterPlot.java:351) at anl.verdi.plot.types.ScatterPlot$1.stateChanged(ScatterPlot.java:216) at java.desktop/javax.swing.JSpinner.fireStateChanged(JSpinner.java:492) at java.desktop/javax.swing.JSpinner$ModelListener.stateChanged(JSpinner.java:419) at java.desktop/javax.swing.AbstractSpinnerModel.fireStateChanged(AbstractSpinnerModel.java:124) at java.desktop/javax.swing.SpinnerNumberModel.setValue(SpinnerNumberModel.java:460) at java.desktop/javax.swing.JSpinner.setValue(JSpinner.java:386) at java.desktop/com.apple.laf.AquaSpinnerUI$ArrowButtonHandler.actionPerformed(AquaSpinnerUI.java:439) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ucar.ma2.InvalidRangeException: Bad ranges [] length at ucar.ma2.Index.section(Index.java:243) at ucar.ma2.Array.section(Array.java:600) at anl.verdi.data.DataUtilities.minMax(DataUtilities.java:370) at anl.verdi.plot.types.ScatterPlot.updateTimeStepLayer(ScatterPlot.java:334) at anl.verdi.plot.types.ScatterPlot$1.stateChanged(ScatterPlot.java:216) at java.desktop/javax.swing.JSpinner.fireStateChanged(JSpinner.java:492) at java.desktop/javax.swing.JSpinner$ModelListener.stateChanged(JSpinner.java:419) at java.desktop/javax.swing.AbstractSpinnerModel.fireStateChanged(AbstractSpinnerModel.java:124) at java.desktop/javax.swing.SpinnerNumberModel.setValue(SpinnerNumberModel.java:460) at java.desktop/javax.swing.JSpinner.setValue(JSpinner.java:386) at java.desktop/com.apple.laf.AquaSpinnerUI$ArrowButtonHandler.actionPerformed(AquaSpinnerUI.java:439) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ucar.ma2.InvalidRangeException: Bad ranges [] length at ucar.ma2.Index.section(Index.java:243) at ucar.ma2.Array.section(Array.java:600) at anl.verdi.data.DataUtilities.minMax(DataUtilities.java:370) at anl.verdi.plot.types.ScatterPlot.updateTimeStepLayer(ScatterPlot.java:351) at anl.verdi.plot.types.ScatterPlot$1.stateChanged(ScatterPlot.java:216) at java.desktop/javax.swing.JSpinner.fireStateChanged(JSpinner.java:492) at java.desktop/javax.swing.JSpinner$ModelListener.stateChanged(JSpinner.java:419) at java.desktop/javax.swing.AbstractSpinnerModel.fireStateChanged(AbstractSpinnerModel.java:124) at java.desktop/javax.swing.SpinnerNumberModel.setValue(SpinnerNumberModel.java:460) at java.desktop/javax.swing.JSpinner.setValue(JSpinner.java:386) at java.desktop/com.apple.laf.AquaSpinnerUI$ArrowButtonHandler.actionPerformed(AquaSpinnerUI.java:439) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

lizadams commented 2 years ago

Also tested with VERDI_2.1.4_win64_20220720.zip Confirmed same error messages are generated when incrementing the timestep on the scatter plot.

yadongxuEPA commented 2 years ago

Retested with VERDI_2.1.4_linux64_20220809.tar.gz on Atmos and VERDI_2.1.4_win64_20220809.zip on a Windows PC, found that this issue has resolved. The scatter plot was correctly displayed when incrementing the timesteps, no error messages showed up in the command window.
VERDI_testing_issue_255_1 VERDI_testing_issue_255_2

yadongxuEPA commented 2 years ago

Retested with VERDI_2.1.4_linux64_20221007.tar.gz on Atmos and VERDI_2.1.4_win64_20221007.zip on a Windows PC , confirmed that this issue has resolved.

yadongxuEPA commented 10 months ago

Checked VERDI_2.1.5_linux64_20231222.tar.gz on Atmos and it worked.

lizadams commented 10 months ago

I can do this within the VERDI gui using VERDI_2.1.5_mac_20240103.tar.gz, but I am getting an error using the command line option. I am getting the following command line error on the mac:

./verdi.sh -f $cwd/data/model/t2m_only.nc -s "t2m[1]" -g tile -s "t2m[1]2" -g tile -scatter "t2m[1]" "t2m[1]2" in netcdfdataset.java openDataset 1 arguments in netcdfdataset.java openDataset 3 arguments in netcdfdataset.java ready to return openDataset 5 arguments 2024.01.03 21:19:43.973 [main] ERROR anl.verdi.core.VerdiPlugin - Error java.lang.IllegalArgumentException: Invalid call to DataFrameIndex.setXY( x = 1 ... ) at anl.verdi.data.DataFrameIndex.setXY(DataFrameIndex.java:124) ~[?:?] at anl.verdi.plot.data.ScatterXYDataset$FrameData.getValue(ScatterXYDataset.java:79) ~[?:?] at anl.verdi.plot.data.ScatterXYDataset.getXValue(ScatterXYDataset.java:189) ~[?:?] at org.jfree.data.general.DatasetUtilities.iterateDomainBounds(DatasetUtilities.java:759) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:663) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:638) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.plot.XYPlot.getDataRange(XYPlot.java:4466) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.axis.NumberAxis.autoAdjustRange(NumberAxis.java:433) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.axis.NumberAxis.configure(NumberAxis.java:415) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.axis.Axis.setPlot(Axis.java:1043) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.plot.XYPlot.(XYPlot.java:668) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.ChartFactory.createScatterPlot(ChartFactory.java:1692) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at anl.verdi.plot.types.ScatterPlot.createChart(ScatterPlot.java:375) ~[core.jar:?] at anl.verdi.plot.types.ScatterPlot.(ScatterPlot.java:157) ~[core.jar:?] at anl.verdi.plot.types.ScatterPlot.(ScatterPlot.java:134) ~[core.jar:?] at anl.verdi.plot.gui.PlotFactory.getScatterPlot(PlotFactory.java:56) ~[core.jar:?] at anl.verdi.plot.gui.ScatterPlotCreator.createPlotFromCommandLine(ScatterPlotCreator.java:93) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler$28.run(ScriptHandler.java:1019) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler.handleOptions(ScriptHandler.java:1525) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler.run(ScriptHandler.java:167) ~[core.jar:?] at anl.verdi.core.VerdiPlugin.run(VerdiPlugin.java:168) [core.jar:?] at saf.core.runtime.CorePlugin.runApplicationRunnable(CorePlugin.java:93) [saf.core.runtime.jar:?] at saf.core.runtime.CorePlugin.run(CorePlugin.java:48) [saf.core.runtime.jar:?] at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at saf.core.runtime.Boot.run(Boot.java:178) [saf.core.runtime.jar:?] at saf.core.runtime.Boot.main(Boot.java:388) [saf.core.runtime.jar:?]

yadongxuEPA commented 10 months ago

Additional re-tests done on VERDI_2.1.4_linux64_20231013.tar.gz (before Java update) on Atmos and got the same error: image

lizadams commented 9 months ago

Restested using

You can create the gui and load the variables using

./verdi.command -f $cwd/data/model/t2m_only.nc -s "t2m[1]" -g tile -s "t2m[1]*2" -g tile 

Once in the GUI, you can select scatter plot, and then the formulas and create the plot, and no error is generated.

If you try to use the -scatter option and specify the formula, it fails with the following errror.

./verdi.command -f $cwd/data/model/t2m_only.nc -s "t2m[1]" -g tile -s "t2m[1]*2" -g tile -scatter "t2m[1]" "t2m[1]*2"

in netcdfdataset.java openDataset 1 arguments in netcdfdataset.java openDataset 3 arguments in netcdfdataset.java ready to return openDataset 5 arguments 2024.01.25 18:27:36.440 [main] ERROR anl.verdi.core.VerdiPlugin - Error java.lang.IllegalArgumentException: Invalid call to DataFrameIndex.setXY( x = 1 ... ) at anl.verdi.data.DataFrameIndex.setXY(DataFrameIndex.java:124) ~[?:?] at anl.verdi.plot.data.ScatterXYDataset$FrameData.getValue(ScatterXYDataset.java:79) ~[?:?] at anl.verdi.plot.data.ScatterXYDataset.getXValue(ScatterXYDataset.java:189) ~[?:?] at org.jfree.data.general.DatasetUtilities.iterateDomainBounds(DatasetUtilities.java:759) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:663) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.data.general.DatasetUtilities.findDomainBounds(DatasetUtilities.java:638) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.plot.XYPlot.getDataRange(XYPlot.java:4466) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.axis.NumberAxis.autoAdjustRange(NumberAxis.java:433) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.axis.NumberAxis.configure(NumberAxis.java:415) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.axis.Axis.setPlot(Axis.java:1043) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.plot.XYPlot.(XYPlot.java:668) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at org.jfree.chart.ChartFactory.createScatterPlot(ChartFactory.java:1692) ~[netcdfAll-4.5.5-SNAPSHOT.jar:?] at anl.verdi.plot.types.ScatterPlot.createChart(ScatterPlot.java:375) ~[core.jar:?] at anl.verdi.plot.types.ScatterPlot.(ScatterPlot.java:157) ~[core.jar:?] at anl.verdi.plot.types.ScatterPlot.(ScatterPlot.java:134) ~[core.jar:?] at anl.verdi.plot.gui.PlotFactory.getScatterPlot(PlotFactory.java:56) ~[core.jar:?] at anl.verdi.plot.gui.ScatterPlotCreator.createPlotFromCommandLine(ScatterPlotCreator.java:93) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler$28.run(ScriptHandler.java:1021) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler.handleOptions(ScriptHandler.java:1528) ~[core.jar:?] at anl.verdi.commandline.ScriptHandler.run(ScriptHandler.java:167) ~[core.jar:?] at anl.verdi.core.VerdiPlugin.run(VerdiPlugin.java:168) [core.jar:?] at saf.core.runtime.CorePlugin.runApplicationRunnable(CorePlugin.java:93) [saf.core.runtime.jar:?] at saf.core.runtime.CorePlugin.run(CorePlugin.java:48) [saf.core.runtime.jar:?] at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at saf.core.runtime.Boot.run(Boot.java:178) [saf.core.runtime.jar:?] at saf.core.runtime.Boot.main(Boot.java:388) [saf.core.runtime.jar:?]

Creating scatter plot using VERDI GUI is fixed Creating scatter plot from VERDI CLI is not

yadongxuEPA commented 9 months ago

Re-tests done on VERDI_2.1.5_linux64_20240124.tar.gz on Atmos and got the same error, confirmed that the command line issue persists. image