<h2>org.das2.qds.QFunction</h2><p>QFunctions try to recycle as much of the QDataSet interface as possible to define functions. Functions take N parameters as input and result in M parameter output. The N parameters are passed into value as a rank 1 bundle QDataSet, or rank 0 dataset when there is just one input. The M parameter output is returned in a rank 1 bundle dataset. The method exampleInput returns an example input that allows for discovery of the function. Implementations will generally extend AbstractQFunction, which implements values() and exampleOutput(). Goals: <ul> <li> support extra tick labels of axis, which are often the result of SPICE kernel evaluations. <li> allow discovery of function, so the system can pick it up and use it. <li> allow tabulation and plotting of a function. <li> non-linear function optimization. </ul></p> <hr> <a name="exampleInput"></a> <h2>exampleInput</h2> exampleInput( ) → <a href='http://www-pw.physics.uiowa.edu/~jbf/autoplot/doc/org/das2/qds/QDataSet.html'>QDataSet</a> <p>Discover an example input. Result is a rank 1 bundle QDataSet. <blockquote><pre> QFunction ff= TestFunction(); ff.exampleInput().length(); // how many parameters the function takes QDataSet bds= ff.exampleInput().property( QDataSet.BUNDLE_0 ); bds.slice(0).property( QDataSet.UNITS ) // function should handle convertible units (e.g. TimeAxes Ephemeris). bds.slice(0).property( QDataSet.VALID_MIN ) // absolute limits of domain of the function bds.slice(0).property( QDataSet.VALID_MAX ) bds.slice(0).property( QDataSet.TYPICAL_MIN ) // domain of the function parameter bds.slice(0).property( QDataSet.TYPICAL_MAX ) bds.slice(0).property( QDataSet.CADENCE ) // granularity of the function parameter bds.slice(0).property( QDataSet.LABEL ) // label for the parameter </pre></blockquote> slice(0) is the first argument, slice(1) would be the second, etc. This would be a bundle. Note, for functions that have only one argument, like F(T)→[R,MLT,MLAT], this may return a rank 0 dataset. Clients should pass a dataset to the value method a dataset with the same geometry.</p> <h3>Returns:</h3> rank 1 bundle of N elements, or rank 0 for functions when the function has just one parameter. <br><br> <a href="https://github.com/autoplot/dev/search?q=exampleInput&unscoped_q=exampleInput">[search for examples]</a> <a href="https://github.com/autoplot/documentation/tree/master/javadoc/org/das2/qds/QFunction.md">[view on GitHub]</a> <a href="http://www-pw.physics.uiowa.edu/~jbf/autoplot/javadoc2018/org/das2/qds/QFunction.html#exampleInput">[view on old javadoc]</a> <a href="https://sourceforge.net/p/autoplot/code/HEAD/tree/autoplot/trunk/QDataSet/src/org/das2/qds/QFunction.java#l73">[view source]</a> <br> <br> <hr> <a name="exampleOutput"></a> <h2>exampleOutput</h2> exampleOutput( ) → <a href='http://www-pw.physics.uiowa.edu/~jbf/autoplot/doc/org/das2/qds/QDataSet.html'>QDataSet</a> <p>Discover an example of output. Result is a rank 1 bundle QDataSet. This was introduced to support QFunctions where it would be expensive to calculate an input that would result in a meaningful output. It's assumed that many implementations will simply be: <blockquote><pre> value( exampleInput() ); </pre></blockquote></p> <h3>Returns:</h3> rank 1 bundle of M elements. <br><br> <a href="https://github.com/autoplot/dev/search?q=exampleOutput&unscoped_q=exampleOutput">[search for examples]</a> <a href="https://github.com/autoplot/documentation/tree/master/javadoc/org/das2/qds/QFunction.md">[view on GitHub]</a> <a href="http://www-pw.physics.uiowa.edu/~jbf/autoplot/javadoc2018/org/das2/qds/QFunction.html#exampleOutput">[view on old javadoc]</a> <a href="https://sourceforge.net/p/autoplot/code/HEAD/tree/autoplot/trunk/QDataSet/src/org/das2/qds/QFunction.java#l85">[view source]</a> <br> <br> <hr> <a name="value"></a> <h2>value</h2> value( <a href='http://www-pw.physics.uiowa.edu/~jbf/autoplot/doc/org/das2/qds/QDataSet.html'>QDataSet</a> parm ) → <a href='http://www-pw.physics.uiowa.edu/~jbf/autoplot/doc/org/das2/qds/QDataSet.html'>QDataSet</a> <p>Evaluate the function at the location. A rank 1 dataset of N parameters is passed in, and a rank 1 dataset of M parameters is returned. It's presumed that this is calculated in interactive time (1/30sec) for GUI applications like attaching ephemeris ticks to an axis (note no monitor parameter to indicate feedback).</p> <h3>Parameters</h3> parm - rank 1 bundle of N elements, or rank 2 array of such. <h3>Returns:</h3> rank 1 bundle of M elements, or rank 2 array of such. <br><br> <a href="https://github.com/autoplot/dev/search?q=value&unscoped_q=value">[search for examples]</a> <a href="https://github.com/autoplot/documentation/tree/master/javadoc/org/das2/qds/QFunction.md">[view on GitHub]</a> <a href="http://www-pw.physics.uiowa.edu/~jbf/autoplot/javadoc2018/org/das2/qds/QFunction.html#value">[view on old javadoc]</a> <a href="https://sourceforge.net/p/autoplot/code/HEAD/tree/autoplot/trunk/QDataSet/src/org/das2/qds/QFunction.java#l38">[view source]</a> <br> <br> <hr> <a name="values"></a> <h2>values</h2> values( <a href='http://www-pw.physics.uiowa.edu/~jbf/autoplot/doc/org/das2/qds/QDataSet.html'>QDataSet</a> parm ) → <a href='http://www-pw.physics.uiowa.edu/~jbf/autoplot/doc/org/das2/qds/QDataSet.html'>QDataSet</a> <p>Evaluate the function at the locations in parm. A rank 2 dataset of CxN parameters is passed in, and a rank 1 dataset of CxM parameters is returned, where C is the number of repeated value operations. This is useful for when it's expensive to look up the first value.</p> <h3>Parameters</h3> parm - rank 2 of C bundles of N elements. rank 1 parm is acceptable if the exampleInput result is rank 0. <h3>Returns:</h3> rank 2 of C bundles of M elements, or rank 2 array of such. <br><br> <a href="https://github.com/autoplot/dev/search?q=values&unscoped_q=values">[search for examples]</a> <a href="https://github.com/autoplot/documentation/tree/master/javadoc/org/das2/qds/QFunction.md">[view on GitHub]</a> <a href="http://www-pw.physics.uiowa.edu/~jbf/autoplot/javadoc2018/org/das2/qds/QFunction.html#values">[view on old javadoc]</a> <a href="https://sourceforge.net/p/autoplot/code/HEAD/tree/autoplot/trunk/QDataSet/src/org/das2/qds/QFunction.java#l49">[view source]</a> <br> <br>