Taxonomies¶
classy is developed to facilitate the application of the Mahlke+ 2022 taxonomy to asteroid reflectance spectra.
Nevertheless, it can also be used to classify observations in other
systems: Tholen 1984
and DeMeo+ 2009.[1] The
main properties of all systems are summarized below, focusing on their
applicability to data with given properties.
Mahlke+ 2022¶
Observables |
Reflectance Spectra, Visual Albedo |
Wavelength Range |
0.45-2.45µm, or any subset of this range |
Number of Classes |
16 |
Class Assignment |
Probabilistic |
There are 16 classes plus the common placeholder class X for asteroids
of either E, M, or P type without albedo information.
Any asteroid classified as B, C, or P type is classified as Ch if the h feature is present.
The classes E, M, P (and X) can further carry the feature flags e and k. can further carry the feature flags e and k
if the corresponding features are present.
The spectral class templates can be loaded using the classy.taxonomies.mahlke.load_templates() function,
which returns a dict containing the classes as keys and the template spectra as values.
The following preprocessing steps are automatically done when using the classy.Spectrum.classify()
method:
Feature Detection
Resampling to common wavelength grid
Log-transform of reflectance (
ln) and albedo (log10)Normalisation using
mixnormalgorithm
The preprocessing does not change the wave and refl attributes of the
spectrum.
The classification results are probabilistic, meaning that the classified
spectrum has a certain probability to belong to a given class. These probabilities
are accessible via the class_CLASS attributes, where CLASS should
be replaced by the respective class letter. The most probable class is
assigned to the class_ attribute.
$ classy classify ceres --plot --taxonomy mahlke
>>> import classy
>>> ceres = classy.Spectra(1, source="ECAS")[0] # get ECAS spectrum of (1) Ceres
>>> ceres.classify() # taxonomy='mahlke' is default
>>> ceres.class_
'C'
>>> ceres.class_C
0.9597002617708775
>>> ceres.class_B
0.03962395712733269
DeMeo+ 2009¶
Observables |
Reflectance Spectra |
Wavelength Range |
0.45-2.45µm |
Number of Classes |
24[2] |
Class Assignment |
Absolute |
There are 24 main classes. The S-type and A and Q classes can carry a w
suffix indicating a weathered, reddened appearance.
The spectral class templates can be loaded using the classy.taxonomies.demeo.load_templates() function,
which returns a dict containing the classes as keys and the template spectra as values.
The following preprocessing steps are automatically done when using the classy.Spectrum.classify()
method:
Feature Detection
Resampling to common wavelength grid
Remove the slope of the spectrum
Normalisation to 0.55μm
The preprocessing does not change the wave and refl attributes of the
spectrum.
The decision tree outlined in Appendix B in DeMeo+ 2009 is used to compute
the class based on the principal scores and the slope of the spectrum.
Several branches of the tree end in multiple classes and require the user
to inspect the presence of features. classy automatically does this.
The feature detection is not perfect and visual inspection is encouraged.
Other branches do not have a clear distinction defined. For example, a spectrum might either be a D- or an A-type depending on its scores.
In this case, classy makes use of the class templates by computing the
correlation coefficient between the spectrum and the (slope-removed) class
templates. This is applied to differentiate D and A, C and X,
The resulting class is assigned to the class_demeo attribute. The principal
components scores are accessible via the scores_demeo attribute.
$ classy classify nysa --taxonomy demeo --source MITHNEOS
Tholen 1984¶
Observables |
Reflectance Spectra, Visual Albedo |
Wavelength Range |
0.337 - 1.041µm |
Number of Classes |
15 |
Class Assignment |
Absolute |
There are 15 classes. Notation used to flag uncertain (U), indecisive (I), and noisy (:) data is not kept.
The spectral class templates can be loaded using the
classy.taxonomies.tholen.load_templates() function, which returns a
dict containing the classes as keys and the template spectra as values.
The following preprocessing steps are automatically done when using the classy.Spectrum.classify()
method:
Resampling to common wavelength grid
Normalisation to 0.55μm
The preprocessing does not change the wave and refl attributes of the
spectrum.
Tholen used a minimal-tree algorithm to gradually identify clusters and define classes. This means that classes do not have well defined boxes in the principal space and no decision tree is in place.
Following the minimal-tree principle, new observations asteroids are assigned to the class of the closest asteroid from the ECAS dataset in principal component space. An issue may arise for A, Q, V, which occupy a similar small volume.[3]
The resulting class is assigned to the class_tholen attribute. The principal
components scores are accessible via the scores_tholen attribute.
$ classy classify nysa --taxonomy tholen