Autoplot Application (20181115a)
Garden Play House and Reflecting Pool temperatures are alive again, after the old Raspberry Pi died in a rain storm when the window was left open. This script updates the axis to the last 24 hours.
Autoplot attempts to allow plotting of data from many data sources, including remote CDF files and OpenDAP servers.
Datasets are identified with URIs, and by the URI's extension, data are loaded into the internal data model. Data are then
displayed by guessing the rendering method and axis ranges to provide a reasonable, useful view of the data. Data can then
be additionally processed with other operations like smooth and FFT, and Jython scripting provides a capable programming environment.
This is the Autoplot2018a branch. This is an update to the production version containing bugfixes and minor new features.
Java 7 is now required. Java 8 will be required sometime soon.
Run with 4GB of memory (64-bit Java only): autoplot_4GB.jnlp
Single-jar version, autoplot.jar, can be run without network access and from the command line.
Mac DMG Release is available.
Bugfixes (2018-11-15 r23054):
- timeranges like 'lastday+P1D/P1D' now work, to represent "tomorrow". Before only "lastday-" was handled.
- 2058: devel release showed bug where not resetting IDs would cause failure in "clone to new application" and pngwalk generation. Thanks Ivar and Masafumi!
- next and previous scan button updating was calling the 2-D bounds code when it only needed a bounds on X, causing performance issues.
- add recCount and recStart controls to CSV reader, so that create png events lists can be subsetted. Thanks, Masafumi!
- 2054: study reference leaks for columns and rows. Masafumi observed a new NullPointerException.
- 2056: tickleTimer would restart timer while its event was running, which for slow events can cause threads to build up, slowing or crashing machine. Thanks, Masafumi!
- filenames with colons (data_2019-01-01T00:00.dat) would not allow relative reference launch. Now colons past the eighth position are ignored. Thanks, Chris!
- 2053: timerange macro doesn't update as timerange changes.
- 2054: "delete plot" didn't check to see if there were columns which could be deleted.
- in DataPointRecorder's reset units, handle when nominal units are used in the table. Thanks, Bill!
- 2051: rank 2 ytags was slow, when looking at a tiny slice in x. Thanks, Masafumi!
- 2052: improve support for datumRange, URI, and URL parameters in Jython scripts, when creating GUIs.
- update to new certificate signatures for 2018-2019.
- NullPointerException when params was escaped.
- 2049: setLayout(3,3) gets IDs backwards. Revert this change which breaks many old scripts.
- Orbits' definition files can be read via an HTTP redirect now.
- NullPointerException would occur when type "Datum" was encountered, in a qstream Autoplot produced.
- rfe609: handle case where 1-point dataset would mess up the autoranging. Thanks, Masafumi!
- invokeScriptSoon on the event thread, causing warning message and potentially hanging GUI during file download.
- rte_2055330411: "|reducex('1day')" would not parse properly.
- File->Reset resets to the data set selector.
- DataSources with parents (vap+internal:data_8,data_9,data_10) would get a progress bar not connected to any plot, which would grab the mouse focus during batch processing.
- trim of rank 3 join would add empty tables for each table. Instead this should only join the non-empty ones. Thanks, Masafumi!
- embed data in .vap option didn't check for ephemeris and events lists.
- HAPI properly handles when time is not in the list of parameters.
- SeriesRenderer properly looks at cadenceCheck again. Thanks, Ivar!
- 2043: use HAPI_DATA environment variable to set the location of the cache. Don't request data outside of the startDate, stopDate range.
- allow dataPointRecorder's select method to be called on or off the event thread.
- 2042: correction to the ticks code which would detect when new ticks were needed during pngwalk generation, sometimes failing.
- 2042: correct code which would resize the canvas in scripts running in headful mode, which would occasionally fail.
- 2042: remove old listeners which were preventing DasRows and DasColumns from garbage collection.
- tweaks to pdb (Python debugger) support, trying to improve its utility.
- some annotation position icons were missing.
- StackedHistogram (peaks-and-averages) renderer max values could go past the min of the next channel, creating ambiguity.
- check for dark background color in Jython editor for warnings, program counter, and usages.
- findbugs NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE.
- When saving logger properties, logger inheritance was not considered, making an overly-explicit configuration.
- Jython dataset(o) now allows o to be a tuple, and background=None uses a transparent background, other minor changes to annotation command.
- when a stack trace is processed in Jython, to jump to the error, allow the stack trace to be deeper, to support Geopack file.
- "about Autoplot" page had the wrong version number.
- 2038: ephemeris labels didn't line up with the values for some tick lengths.
- digitizer labels were not set properly for the addDataPoint(rank1bundle) method, because getComponentNames did not support rank 1 bundle.
- rte_1888141829: digitizer table could only load files containing nominal data if the nominal datums had been created already.
- 2037: correctly read valid_min, valid_max, and fill_value from DSCOVR mission NetCDF files.
- 2013: loading vap should not automatically move spectrograms under line plots.
- improve error feedback when DatumRange string is passed to the Datum parser.
- 2034: reset method must cancel existing monitors on the reset thread.
- 2032: extraneous decimal point in tick labels.
- peaks in stacked histogram renderer didn't clip properly. Thanks, Chris!
- 2029: cdaweb filter apply_esa_flag used old code that relied on monitor reuse, which is no longer allowed.
- 2029: CDF virtual variables would not load because of tighter handling of monitors and sloppy code.
- CDF source's slice1 parameter should better match |slice1.
- add TableRowSorter which minds the data type. Thanks, Masafumi for pointing this out!
- rename codes within CDF reader to be more consistent.
- completions work when coding in indented bug.
- 2025: HAPI GUI failed to initialize properly when the id was already set.
- rte_1870708520: catch runtime exception when trying to find aggregations.
- 2016: plot title macros should always listen to the first plotElement.
- Findbugs tests restored and a round of Findbugs citations were resolved.
- Auralizer code would show index out of bounds with some data, check for constant data.
- AggregatingDataSourceFactory.getFileStorageModel(uri) would fail if the uri didn't have any fields. Thanks, Ivar!
- Fits reader supports where default object is not a readable table.
- Matlab export options was using the IDL options dialog.
- horizontal and vertical slicers allow units sloppiness. Thanks, Chris!
- "clean" method removed from Matlab export to support compiling under Java 9. Thanks, Dan!
- plot element style properties dialog now has cancel which will revert to original settings.
- add method for replacing the navigation panel in PNGWalk.
- Update to new CDF reader, where the source is available.
- HAPI data is displayed with the units in the label.
- 658: add method for adding right and left panels to the GUI, to develop custom applications.
- "add right-axis plot" which adds a plot at the same position but with a right-axis which is independent. Thanks, Ivar!
- 657: --noAskParams will prevent the script parameters / security verification from showing.
- write-pngwalk-from-events lists supports zero-width events, when using settings like "0%-1hr,100%+1hr"
- export to very old vap formats, like 2013, removed because they are clutter.
- support link(r2x,r2y,r2z) by flattening the three tables.
- catch http://.../hapi/data and make into HAPI URI.
- support for renderType="spectrogram>rebin=triScat"
- LoggerManager.readConfiguration can read any file now, not just that named by -Djava.util.logging.config.file=...
Less recent features:
- PNGWalkTool's write-to-PDF now writes caption below, supporting long captions, and includes lines for notes and the file name.
- Jython dataset command now allows dataset(x,y,z) as an experimental alternate to the link command.
- add FileUtil.readFileToString, to simplify scripts.
- checkCadence==False is respected by the spectrogram renderer with most rebin types.
- annotations now have scale property, to support 300dpi printing of externally rendered LaTeX.
- DDataSet slice checks for out-of-bounds on slice, producing a more readable error.
- CDF reader shows data types, record count, block size, and varies flag.
- see Source Forge
- Bugs often have a four-digit ID and can be reviewed with https://sourceforge.net/p/autoplot/bugs/<ID>/.
- Features typically have a three-digit ID and can be reviewed with https://sourceforge.net/p/autoplot/feature-requests/<ID>/.
This completes the feature set for the new production branch. No major features will be added before branching this version.
A production branch will be started in a couple of weeks, and the "Start Autoplot" link at the top of
autoplot.org will run this version.
Feedback on the function and quality of this release is greatly appreciated!
Data is input from:
- ASCII files (.dat,.txt)
- CSV files (.csv)
- Binary files (.bin)
- CDF files(.cdf)
- Excel spread sheets (.xls)
- das2Streams (.d2s or .das2Stream)
- ViRBO's TSDS server
- CDAWeb data server (vap+cdaweb:)
- das2servers (vap+das2server:)
- QStreams (.qds), QDataSet on a das2Stream
- Plasma Wave Group das2 Server
- NetCDF files (.nc,.ncml)
- HDF5 files (.h5,.hdf5)
- DODs servers (.dds)
- Cluster Exchange Format files (.cef)
- Fits Format Files
- Images (.jpg, .png, .gif)
- Wav audio files (.wav)
This is not complete, and limitations include:
- Quantities of rank 3 dimensionality (e.g. flux(Time,Energy,pitch) are plotted by slicing.
- Quantities of rank 4 dimensionality (e.g. flux(Time,Energy,azimuth,sector) are plotted by slicing twice.
autoplot.org is the wiki website, and contains
more information than this launch page.