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

_images/class_overview.png _images/class_overview_dark.png

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 mixnorm algorithm

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
_images/ceres_classification.png _images/ceres_classification_dark.png
>>> 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

_images/classes_demeo.png _images/classes_demeo_dark.png

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
_images/nysa_demeo.png _images/nysa_demeo_dark.png

Tholen 1984

_images/tholen1984_classes.png _images/tholen1984_classes_dark.png

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