Class FixedSkyMatchEngine.InDegrees
- java.lang.Object
-
- uk.ac.starlink.table.join.AbstractSkyMatchEngine
-
- uk.ac.starlink.table.join.FixedSkyMatchEngine
-
- uk.ac.starlink.table.join.FixedSkyMatchEngine.InDegrees
-
- All Implemented Interfaces:
MatchEngine
- Enclosing class:
- FixedSkyMatchEngine
public static class FixedSkyMatchEngine.InDegrees extends FixedSkyMatchEngine
MatchEngine class that behaves like FixedSkyMatchEngine but uses human-friendly units (degrees and arcseconds) rather than radians for tuple elements and match parameters.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class uk.ac.starlink.table.join.FixedSkyMatchEngine
FixedSkyMatchEngine.InDegrees
-
-
Field Summary
-
Fields inherited from interface uk.ac.starlink.table.join.MatchEngine
NO_BINS
-
-
Constructor Summary
Constructors Constructor Description InDegrees(SkyPixellator pixellator, double sepRadians)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description NdRange
getMatchBounds(NdRange[] inRanges, int index)
Given a range of tuple values, returns a range outside which no match to anything within that range can result.uk.ac.starlink.table.DescribedValue[]
getMatchParameters()
Returns a set of DescribedValue objects whose values can be modified to modify the matching criteria.uk.ac.starlink.table.ValueInfo[]
getTupleInfos()
Returns a set of ValueInfo objects indicating what is required for the elements of each tuple.-
Methods inherited from class uk.ac.starlink.table.join.FixedSkyMatchEngine
canBoundMatch, getBins, getMatchScoreInfo, getScoreScale, getSeparation, matchScore, setSeparation, toString
-
Methods inherited from class uk.ac.starlink.table.join.AbstractSkyMatchEngine
calculateSeparation, getScale, getTuningParameters, setScale
-
-
-
-
Constructor Detail
-
InDegrees
public InDegrees(SkyPixellator pixellator, double sepRadians)
Constructor.- Parameters:
pixellator
- handles sky pixellisationsepRadians
- initial value for maximum match separation, in radians
-
-
Method Detail
-
getTupleInfos
public uk.ac.starlink.table.ValueInfo[] getTupleInfos()
Description copied from interface:MatchEngine
Returns a set of ValueInfo objects indicating what is required for the elements of each tuple. The length of this array is the number of elements in the tuple. Each element should at least have a defined name and content class. The info's nullable attribute has a special meaning: if true it means that it makes sense for this element of the tuple to be always blank (for instance assigned to no column).- Specified by:
getTupleInfos
in interfaceMatchEngine
- Overrides:
getTupleInfos
in classFixedSkyMatchEngine
- Returns:
- array of objects describing the requirements on each element of the tuples used for matching
-
getMatchParameters
public uk.ac.starlink.table.DescribedValue[] getMatchParameters()
Description copied from interface:MatchEngine
Returns a set of DescribedValue objects whose values can be modified to modify the matching criteria. Typically at least one of these will be some sort of tolerance separation which determines how close tuples must be to count as a match. This match engine's behaviour can be modified by callingDescribedValue.setValue(java.lang.Object)
on the returned objects.- Specified by:
getMatchParameters
in interfaceMatchEngine
- Overrides:
getMatchParameters
in classFixedSkyMatchEngine
- Returns:
- array of described values which influence the match
-
getMatchBounds
public NdRange getMatchBounds(NdRange[] inRanges, int index)
Description copied from interface:MatchEngine
Given a range of tuple values, returns a range outside which no match to anything within that range can result. If the tuples on which this engine works represent some kind of space, the input values and output values specify a hyper-rectangular region of this space. In the common case in which the match criteria are based on proximity in this space up to a certain error, this method should return a rectangle which is like the input one but broadened in each direction by an amount corresponding to the error.Both the input and output rectangles are specified by tuples representing its opposite corners; equivalently, they are the minimum and maximum values of each tuple element. In either the input or output min/max tuples, any element may be null to indicate that no information is available on the bounds of that tuple element (coordinate).
An array of n-dimensional ranges is given, though only one of them (specified by the
index
value) forms the basis for the output range. The other ranges in the input array may in some cases be needed as context in order to do the calculation. If the match error is fixed, only the single input n-d range is needed to work out the single output range. However, if the errors are obtained by looking at the tuples themselves (match errors are per-row) then in general the broadening has to be done using the maximum error of any of the tables involved in the match, not just the one to be broadened. For a long time, I didn't realise this, so versions of this software up to STIL v3.0-14 (Oct 2015) were not correctly broadening these ranges, leading to potentially missed associations near the edge of bounded regions.This method can be used by match algorithms which know in advance the range of coordinates they will match against and wish to reduce workload by not attempting matches which are bound to fail.
For example, a 1-d Cartesian match engine with an isotropic match error 0.5 would turn input values of ((0,200),(10,210)) into output values ((-0.5,199.5),(10.5,210.5)).
This method will only be called if
MatchEngine.canBoundMatch()
returns true. Thus engines that cannot provide any useful information along these lines (for instance because none of its tuple elements isComparable
) do not need to implement it in a meaningful way.- Specified by:
getMatchBounds
in interfaceMatchEngine
- Overrides:
getMatchBounds
in classFixedSkyMatchEngine
- Parameters:
inRanges
- array of input ranges for the tables on which the match will take place; each element bounds the values for each tuple element in its corresponding table in a possible match (to put it another way - each element gives the coordinates of the opposite corners of a tuple-space rectangle covered by one input table)index
- which element of theinRanges
array for which the broadened output value is required- Returns:
- output range, effectively
inRanges[index]
broadened by errors - See Also:
MatchEngine.canBoundMatch()
-
-