Autoplot Application (20180316a)
1-Wire sensor and HAPI server hosted on Raspberry Pi monitor pool temperature.
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 Autoplot2017a 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.
Single-jar version, autoplot.jar, can be run without network access and from the command line.
Mac DMG Release is available.
SourceForge has made changes which require special actions in the release process. Please be aware that this may cause unusual behavior.
Bugfixes (2018-03-16 r22211):
- QStream and Das2Stream export split into separate codes.
- 1969: MutablePropertyDataSet no longer implies mutable. Thanks, Jon N.!
- Chris put in support for the Das2Server to support redirects from http to https.
- write animated gif delay times corrected, where delays were 1/10 of what they should have been.
- jython completions will evaluate constructors. be more aggressive about dropping trailing lines to make a valid code.
- slice editor will look up the index as the time is changed.
- corrections to mash-up tool, preserving unfolded tree states and where function name was mistaken for variable name.
- 1956: horizontal lines were not drawn because bounding box had height=0. Vertical lines had the same problem.
- 1966: runScript which should be called from the event thread, loads the script off the event thread.
- 1600: in history.txt, only log URIs which are human-entered.
- rte_1731551069: filtering with "where" in CDF files, when data has different rank.
- 1965: "and" and "or" need to be infix operators in mashup. Thanks, Allison!
- 1963: Ivar caught where a loop didn't check the dirty flag to see if a script needed to be saved.
- popup documentation for annotation and plot now have link to wiki. Thanks, Ivar!
- two-argument properly accum checks units now.
- Correct histogram mode when data x units are different than axis units.
- dasCore didn't support axis labels on top.
- 1408: experiment with leaving the script name onto the address bar by replacing it when the progress bar finishes.
- HAPI html redirects didn't have timeout. (Some normal connections too.)
- improve jython completions support by testing for second line with indent continuation.
- jython editor has new "run selected" action.
- fix runtime error which could happen when %d was the format. Some codes didn't check for this and cast the data.
- 1947: fix 1-pixel error in colorbar pointed out by Kristoff. (Now it's a half-pixel, but this is a PDF rendering problem.)
- always get the makeTutorialHtml from the website, since release showed there were issues.
- 1962: catch strange ConcurrentModificationException when running http://autoplot.org/data/script/examples/plotsAndAnnos2018.jy
- dataset toString method had a branch which would cause RTE when format was %d (integer).
- clean up of synchronize function, recent changes could cause index-out-of-bounds error.
- 1687: various improvements and clean-up of Jython completions engine.
- rte 0413258104: format timetags of Units.cdfTT2000 was mis-handled for SCALEMIN and SCALEMAX properties.
- rte553: property assign units for ds[0,:]=ds1 and ds1 has units and ds does not.
- print a warning when a FloatDataSet is used to store time location data, since this is rarely going to work.
- 1959: fix layout doesn't swap plot positions when rows are out-of-order (item 4).
- 1956: FCE line which was way off-canvas still affected PDF output, messing up the bounding box. Thanks, Bill!
- 1957: correct where set depend0 cadence would reset improperly to picoseconds. Thanks, Bill!
- 1958: NetCDF library didn't properly handle spaces in filenames. Thanks, Masafumi!
- 1953: Masafumi found cases where rounding was done incorrectly, probably because kludgy code was removed. Thanks, Masafumi!
- Autoplot server (port 12345) improperly created the Jython environment, breaking plot named parameters. Thanks, Eric!
- 1952: uncommitted changes implementing flag for indexed properties and allowing just AbstractDataSet to handle properties.
- rte_1463914178: throw a more descriptive error do we can figure out what's going on.
- 1953: kludgy code resulted in errors with some CDF_TT2000 times, showing 23:61 instead of 00:01 under some conditions. Thanks, Ivar!
- 1952: reimplement isInheritedProperty to avoid so much string searching with slice operations.
- extent code used isMonotonicAndIncreasingQuick, when new isMonotonicQuick is sufficient. Thanks, Ivar!
- 1952: rewrite within(), used in huge scatter, to dramatically improve performance. Thanks, Ivar!
- 1952: "where" uses bigger blocksize for 5000000 record operation, showing modest (20-30%) speed improvements. Thanks, Ivar!
- direct access of longs from CDF file was never verified, now it's correct.
- rte_0609678840: old icon reference in jnlp single-instance code corrected. Thanks daekyu!
- 1952: Ivar had a code which showed where a check for each of 5000000 points' properties was slowing things down, this test is limited to QDataSet.MAX_PLANE_COUNT (=50) now..
- 1748: insert PWD before completions. Thanks, Masafumi!
- minor improvements to the contours renderer. Thanks, Masafumi!
- NullPointerException when Python getDataSet didn't properly handle null. Thanks, Ivar!
- rank 1 Join of us2000 datums didn't properly report the units, breaking autoranging for "vap+inline:2016-10-12T12:00Z&RENDER_TYPE=eventsBar
- getDataSet calls were invoked with completions, causing strange delays and failures.
- 1950: make PyQDataSet putProperty consistent with Ops.putProperty. Support "dimensionless - Hz" to result in Hz, regardless of argument order.
- tweaks to the mash up GUI, such as reducing its size and correcting layout problems. Thanks, Craig!
- 1949: small angle bug in filled circle. Disable path-simplifaction code which was messing this up. Thanks, Masafumi!
- 1948: spaces in CDF parameter names fails.
- 1596: Mash-Up URIs, which use vap+inline, support make-aggregation. Thanks, Craig!
- added programmatic method to reset the axis units to a convertible unit. Thanks, Masafumi!
- putValues function was inadvertently broken in early January, when dataset had units. Thanks, Sadie!
- AutoplotServer "-o -" didn't work (to output to stdout), because arguments parser didn't handle "-" properly.
- 1946: cadence was handled inconsistently for filled histogram, between the fill and the outline. Thanks, Scott!
- in ensureMonotonicAndIncreasingWithFill, where the last value was assigned even though the value was not monotonic. Thanks, Ivar!
- updating QC status properly repaints.
- 1939: FILL_VALUE is now propagated to CDF. Thanks, Ivar!
- 1944: invalid .jy reference in the address bar would prevent "load" action on script panel.
- improve error feedback when time location is added to time location.
- colons in filenames of pngwalks are again handled properly. Correct interpolation used to make thumbnails of small images, and properly handle .gif files.
- downloadResourceAsTempFile assumed it had a monitor, and old code example used None for monitor.
- 1942: limits on interpolation in synchronize.
- collapse GUI needs to check to avoid runtime errors.
- 1941: orphaned monitor with aggregation.
- format to CDF removes old CDF file before writing new one, so new result is not affected. Thanks, Ivar!
- 626: ctrl+shift+play (and shift+"plot below") is plot above.
- if the fill-to-reference color is transparent, then draw a line the color of the axes at the reference value.
- URI history now only records human-entered URIs, so URIs loaded within vap do not clutter history.
- 584: addToSearchPath supports single-jar releases.
- mashup tool guesses names for variables.
- jython script plot command has topAxisOf keyword which makes a new plot with the axis drawn on top.
- improve error message when ISO8601 time is sent to DatumRangeUtil.parseTimeRange (not parseTime).
- add tickSpacing property to orbit control GUI.
- console "AP>" prompt tooltip shows the stack trace at the last highlighted message.
- indgen returns an IndexDataSet that takes no memory and is well-suited for Jython scripts.
- Orbit plot allows the tick frequency to be controlled. Thanks, Bill!
- Property editor now allows "edit selected" on root of array. Thanks, Jeremy!
- Jython gets new "dataset" command which takes properties as named parameters.
- annotation command allows "OutsideSE", and corrects offset for OutsideNE. Thanks, Ivar!
- annotation command allows "" for rowId and columnId, which anchors to the canvas boundaries.
- Improve create-pngwalk feedback with $Y$j_$H$M$S(subsec,places=3), and include $H$M$S$(subsec,places=3) in examples.
- AutoplotDataServer supports HAPI by generating info and data responses. Thanks, Bob!
- tune huge scatter for when data units are the same as axis units.
- FDataSet can provide access to raw float values, avoiding numerical noise from float-to-double casting, using new capability.
- several rebin functions renamed to binAverage, since they are unlike the IDL routines and the name causes confusion. Thanks, Masafumi!
- new annotation command is easier to use than previous calls to create annotations from scripts. Thanks, Masafumi!
- Contours renderer has more controls now. LabelCadence is now a string to support "20em". Thanks, Masafumi!
Less recent features:
- update RBSP orbits to 2017-10-02.
- script editor has "print" menu item, which provides dialog and prints with syntax highlighting.
- LDataSet can provide access to long64 values, using new capability.
- Check for valid access URL in CDAWeb metadata, so that valid datasets continue to work.
- LDataSet.putValue() checks for NaN and assign the smallest long value, so at least it's clear when a mistake is made.
- orbit mode has control for tick spacing (e.g. "2hr"), under the controller node.
- introduce cumulativeMin and cumulativeMax to scripting.
- 617: ASCII editor improvements.
- improvements to completions in Jython script panel.
- 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.