org.das2.qds.SemanticOps
Common expressions that apply semantics to QDataSet. Introduced
to reduce a lot of repeated code, but also to make it clear where semantics
are being applied.
bounds
bounds( QDataSet ds ) → QDataSet
return the bounds DS[ JOIN_0=x,y; BINS_1=min,maxInclusive ] of the datasets
independent parameters. This is only implemented for:
rank 2 Tables | extent(X),extent(Y) and Z is not represented |
rank 3 array of tables | extent(X),extent(Y) and Z is not represented |
rank 1 Y(X) | extent(X),extent(Y) |
not for rank 2 bundle dataset |
not for rank 1 bundle dataset |
The zeroth dimension will be the physical dimension of the DEPEND_0 values. Or said another way:
bounds[0,0]= X min | bounds[0,1] = X max | bounds.slice(0) is the extent of X | |
bounds[1,0]= Y min | bounds[1,1] = Y max | bounds.slice(1) is the extent of Y | |
Parameters
ds - rank 2 dataset with BINS_1="min,maxInclusive"
Returns:
a QDataSet
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
cadenceCheck
cadenceCheck( QDataSet tds, QDataSet ds ) → QDataSet
return a dataset with 1's where the cadence preceeding this measurement is acceptable, and 0's where
there should be a break in the data. For example, here's some pseudocode:
findex= Ops.interpolate( xds, x )
cadenceCheck= cadenceCheck(xds)
r= where( cadenceCheck[floor(findex)] eq 0 )
x[r]= fill
Presently this just uses guessXTagWidth to get the cadence, but this may allow a future version to support
mode changes.
The result is a dataset with the same length, and the zeroth element is always 1.
Parameters
tds - rank 1 dataset of length N.
ds - dataset dependent on tds and used to detect valid measurements, or null.
Returns:
dataset with length N
See Also:
Ops#valid which checks for fill and valid_min, valid_max. which checks for fill and valid_min, valid_max.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
checkPropertyType
checkPropertyType( String prop, Object value, boolean throwException ) → boolean
verify property types. For example, that UNITS is a org.das2.datum.Units, etc.
Returns true for unrecognized property names (future expansion) and null. If
throwException is true, then an IllegalArgumentException is thrown.
Parameters
prop - the property name, e.g. QDataSet.CADENCE
value - the candidate value for the property.
throwException - if true, throw descriptive exception instead of returning false.
Returns:
true if the property type is okay.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
doubleValue
doubleValue( Number value ) → Double
returns the Double value of the number, preserving null and NaN.
Parameters
value - a Number
Returns:
a Double
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getComponentLabels
getComponentLabels( QDataSet ds ) → String[]
return the labels for a dataset using BUNDLE_1 and DEPEND_1. If BUNDLE_1 is defined and contains a LABEL,
then it is used, otherwise a string value of the data is used, supporting legacy bundles, and if no DEPEND_1 is found
then use the NAME properties from the bundle, or "ch_i" for each channel.
Parameters
ds - the dataset, with a BUNDLE_1 or DEPEND_1 dimension which could be used.
Returns:
labels for each bundled dataset.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getComponentNames
getComponentNames( QDataSet ds ) → String[]
return the labels for a bundle dataset. For a rank 2 bundle, this
will be found in BUNDLE_1, or legacy ones may have nominal data for DEPEND_1.
For a rank 1 bundle this will be BUNDLE_0.
Parameters
ds - rank 1 or rank 2 bundle.
Returns:
the column names.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getDatum
getDatum( QDataSet ds, double d ) → Datum
returns the value as a datum. Note this should be used with reservation,
this is not very efficient when the operation is done many times.
Parameters
ds - dataset providing the UNITS and VALID_MIN, VALID_MAX and FILL_VALUE.
d - the double.
Returns:
a datum representing the value.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getDependentDataSet
getDependentDataSet( QDataSet ds ) → QDataSet
return the dataset that is dependent on others. For a bundle, we
use DataSetOps.unbundleDefaultDataSet
Parameters
ds - a QDataSet
Returns:
a QDataSet
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getLooseUnitsConverter
getLooseUnitsConverter( QDataSet src, QDataSet dst ) → UnitsConverter
returns the UnitsConverter, or IDENTITY if the converter cannot be found
and one of the two units is dimensionless.
Parameters
src - the dataset from which we get the original units.
dst - the dataset from which we get the destination units.
Returns:
the UnitsConverter
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getPlanarView
getPlanarView( QDataSet ds, String name ) → QDataSet
returns the plane requested by name, or null if it does not exist.
If the name is PLANE_i, then return PLANE_i, otherwise return
the dataset with this name.
Note QDataSet has the rule that if PLANE_i is null, then all PLANE_(i+1)
must also be null.
Parameters
ds - a QDataSet
name - a String
Returns:
a QDataSet
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getPropertyType
getPropertyType( String prop ) → String
return the property type expected for the property.
Parameters
prop - a String
Returns:
QDataSet, String, Number, Units, or CacheTag
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getSimpleTableContaining
getSimpleTableContaining( QDataSet tds, Datum x, Datum y ) → QDataSet
return the first table of the bundle containing x and y
Parameters
tds - a QDataSet
x - a Datum
y - a Datum
Returns:
a QDataSet
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getUnits
getUnits( QDataSet ds ) → Units
returns the units found in the UNITS property of the dataset,
or Units.dimensionless if it is not found.
Parameters
ds - a QDataSet
Returns:
the units found in the dataset, or Units.dimensionless.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
getUnitsConverter
getUnitsConverter( QDataSet src, QDataSet dst ) → UnitsConverter
return the UnitsConverter that will convert data from src to the units of dst.
Parameters
src - the dataset from which we get the original units.
dst - the dataset from which we get the destination units.
Returns:
the UnitsConverter
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
guessXTagWidth
guessXTagWidth( QDataSet ds, QDataSet yds ) → Datum
return a reasonable tag width to use, or null if one cannot be
guessed.
Parameters
ds - the dataset containing data with a cadence.
yds - null or a dataset that may contain fill.
Returns:
a Datum
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isBins
isBins( QDataSet ds ) → boolean
Test for bins scheme, where BINS_1 (or BINS_0) is set.
This is where a two-element index is min, max.
Note the BINS dimension must be the last index of the QDataSet.
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isBundle
isBundle( QDataSet ds ) → boolean
Test for bundle scheme. Returns true if the BUNDLE_1 is set.
Parameters
ds - a QDataSet
Returns:
true if the dataset is a bundle
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isJoin
isJoin( QDataSet ds ) → boolean
returns true if the dataset is rank 2 or greater with the first dimension a join dimension.
Note this does not return true for implicit joins, where JOIN_0 is not set.
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isLegacyBundle
isLegacyBundle( QDataSet zds ) → boolean
See Ops.isLegacyBundle
Parameters
zds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isMonotonic
isMonotonic( QDataSet ds ) → boolean
returns true if the dataset indicates that it is monotonically
increasing. See DataSetUtil.isMonotonic.
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isRank1Bundle
isRank1Bundle( QDataSet ds ) → boolean
returns true if the rank 1 dataset is a bundle of rank 0 datasets, or
where DEPEND_0 is a labels dataset.
Parameters
ds - a dataset
Returns:
if rank 1 bundle or rank 1 having labels dataset for DEPEND_0.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isRank2Waveform
isRank2Waveform( QDataSet fillDs ) → boolean
Test for rank 2 waveform dataset, where DEPEND_1 is offset from DEPEND_0,
and the data is the waveform. Other rules include:
- DEPEND_1 must be at least 128 elements long.
- DEPEND_1 must not be dimensionless.
- if DEPEND_1 is in the same units as DEPEND_0, then DEPEND_0 can be ignored.
Parameters
fillDs - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isRank3JoinOfRank2Waveform
isRank3JoinOfRank2Waveform( QDataSet ds ) → boolean
Test for rank 3 dataset that is a join of rank 2 waveform datasets.
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isSimpleBundleDataSet
isSimpleBundleDataSet( QDataSet ds ) → boolean
returns true if the dataset is a bundle of rank 1 datasets. If no
dependence is declared, it is assumed that the first one or two datasets
are the independent datasets, and the last is the dependent.
X,Y --> Y(X)
X,Y,Z --> Z(X,Y)
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isSimpleTableDataSet
isSimpleTableDataSet( QDataSet ds ) → boolean
returns true if the dataset is the scheme of a legacy TableDataSet
with only one table. Note "Tables" have just one X unit and one Y unit,
no bundles.
Consider: rule about "duck typing": rules like !Ops.isBundle break this
because it requires to be a simpleTable, you cannot be a bundle. LANL
rich ASCII allows datasets to be both bundles and simple tables.
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isTableDataSet
isTableDataSet( QDataSet ds ) → boolean
returns true if the dataset is the scheme of a legacy TableDataSet
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isTimeSeries
isTimeSeries( QDataSet ds ) → boolean
returns true if the dataset is a time series. This is either something that has DEPEND_0 as a dataset with time
location units, or a join of other datasets that are time series.
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
isYXT
isYXT( QDataSet ds ) → boolean
YXT is a dataset where T → X → Y. This pattern comes up all the time
and we need to identify it. Ideally the data would be represented as T &rarr (X;Y).
Parameters
ds - a QDataSet
Returns:
a boolean
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
lookupTimeLengthUnit
Deprecated: use Units.lookupTimeLengthUnit
lookupTimeUnits
Deprecated: use Units.lookupTimeUnits
lookupTimeUnits( Datum base, Units offsetUnits ) → Units
lookupUnits
Deprecated: use Units.lookupUnits
trim
trim( QDataSet ds, DatumRange xrange, DatumRange yrange ) → QDataSet
return the parts of the dataset within the bounds. This assumes how
the data is visualized, so for example see SemanticOps.xtagsDataSet
for which dimensions correspond to x and y.
Parameters
ds - the rank 1 or more dataset, including joins.
xrange - the range or null if no trimming should be done
yrange - the range or null if no trimming should be done
Returns:
the trimmed dataset.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
weightsDataSet
weightsDataSet( QDataSet ds ) → QDataSet
return the weights dataset, possibly creating one based on VALID_MIN
VALID_MAX and FILL_VALUE properties. The weights dataset will have
value zero where the data is invalid, and a non-zero weight where it is
valid. DataSets may also contain a weights table with relative weights,
but this is not uniformly supported.
Note: this uses QDataSet.WEIGHTS_PLANE
Note: calls org.das2.qds.DataSetUtil.weightsDataSet.
Parameters
ds - a QDataSet
Returns:
QDataSet with same geometry containing zeros and non-zeros.
See Also:
org.das2.qds.ops.Ops#valid which is equivalent which is equivalent
cadenceCheck which detects for gaps in cadence. which detects for gaps in cadence.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
xtagsDataSet
xtagsDataSet( QDataSet ds ) → QDataSet
return the dataset containing the x tags for the dataset. This
is QDataSet.DEPEND_0, or if that's null then IndexGenDataSet(ds.length).
For a bundle, this is just the 0th dataset.
For a join, this is a join of the xtags datasets of each dataset.
Parameters
ds - a QDataSet
Returns:
a QDataSet
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
ytagsDataSet
ytagsDataSet( QDataSet ds ) → QDataSet
return the ytags for the simple table that is ds.
- rank 2 spectrogram: Z[X,Y] → Y
- bundle_1: ds[ :, [x,y,z] ] → y
- [x,y,z] → y
TODO: consider that these break duck typing goal, and really need a scheme
to tell it how to get the dataset.
Parameters
ds - the dataset
Returns:
the ytags
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]
yxt
yxt( ) → QDataSet
YXT is a dataset where T → X → Y. This pattern comes up all the time
and we need to identify it. Ideally the data would be represented as T &rarr (X;Y).
Returns:
a dataset with this form.
[search for examples]
[view on GitHub]
[view on old javadoc]
[view source]