classy
¶
A tool to explore, download, analyse, and classify asteroid reflectance spectra. Originally designed for classification in the taxonomy of Mahlke, Carry, and Mattei 2022, it now offers multiple taxonomic systems and a suite of quality-of-life features for spectroscopic analysis.[1]
Showcase¶
Things that classy
tries to do well.
Explore and compare.
Quickly find and download spectra in public repositories.
Example: List all spectra of asteroids in the Themis family with albedos up to 0.06 that cover the 0.45-1.8μm range.
$ classy spectra --wave_min 0.45 --wave_max 1.8 --family Themis --albedo ,0.06
+-----------+--------+----------+----------+--------+---------------------+--------+--------+-----------------+
| name | number | wave_min | wave_max | phase | date_obs | family | albedo | shortbib |
+-----------+--------+----------+----------+--------+---------------------+--------+--------+-----------------+
| Themis | 24 | 0.435 | 2.49 | 12.917 | 2005-10-08T05:28:30 | Themis | 0.051 | MITHNEOS Unpub. |
| Themis | 24 | 0.45 | 2.4 | - | - | Themis | 0.051 | Fornasier+ 2016 |
| Themis | 24 | 0.435 | 2.49 | 12.876 | 2005-10-08T00:00:00 | Themis | 0.051 | DeMeo+ 2009 |
| Adorea | 268 | 0.44 | 2.4 | - | - | Themis | 0.039 | Fornasier+ 2016 |
| Lipperta | 846 | 0.45 | 2.39 | - | - | Themis | 0.05 | Fornasier+ 2016 |
| Lermontov | 2222 | 0.45 | 2.38 | - | - | Themis | 0.051 | Fornasier+ 2016 |
+-----------+--------+----------+----------+--------+---------------------+--------+--------+-----------------+
6 Spectra
>>> import classy
>>> spectra = classy.Spectra(wave_min=0.45, wave_max=1.8, family="Themis", albedo=",0.06")
>>> print(f"Found {len(spectra)} spectra from {[spec.shortbib for spec in spectra]}.")
Found 6 spectra from ['MITHNEOS Unpub.', 'Fornasier+ 2016', 'DeMeo+ 2009', 'Fornasier+ 2016', 'Fornasier+ 2016', 'Fornasier+ 2016'].
Coming soon.
Analyse and classify.
Persistent preprocessing and feature recognition for quick classification.
Example: Classify the spectra above following Mahlke+ 2022, DeMeo+ 2009, and Tholen 1984.
$ classy classify --wave_min 0.45 --wave_max 1.8 --family Themis --albedo ,0.06
+-----------+--------+----------+----------+--------+--------------+-------------+--------------+-----------------+
| name | number | wave_min | wave_max | albedo | class_mahlke | class_demeo | class_tholen | shortbib |
+-----------+--------+----------+----------+--------+--------------+-------------+--------------+-----------------+
| Themis | 24 | 0.435 | 2.490 | 0.0507 | C | C | G | MITHNEOS Unpub. |
| Themis | 24 | 0.450 | 2.400 | 0.0507 | C | C | | Fornasier+ 2016 |
| Themis | 24 | 0.435 | 2.490 | 0.0507 | C | C | G | DeMeo+ 2009 |
| Adorea | 268 | 0.440 | 2.400 | 0.0389 | S | | | Fornasier+ 2016 |
| Lipperta | 846 | 0.450 | 2.390 | 0.0504 | P | X | | Fornasier+ 2016 |
| Lermontov | 2222 | 0.450 | 2.380 | 0.0513 | P | C | | Fornasier+ 2016 |
+-----------+--------+----------+----------+--------+--------------+-------------+--------------+-----------------+
6 Spectra
>>> spectra.classify(taxonomy="mahlke")
>>> spectra.classify(taxonomy="demeo")
>>> spectra.classify(taxonomy="tholen")
>>> for spec in spectra:
... print(f"{spec.name} is {spec.class_mahlke} in Mahlke+ 2022, {spec.class_demeo} in DeMeo+ 2009, and {spec.class_tholen} in Tholen 1984")
MITHNEOS/Themis is C in Mahlke+ 2022, C in DeMeo+ 2009, and G in Tholen 1984
M4AST/Themis is C in Mahlke+ 2022, C in DeMeo+ 2009, and in Tholen 1984
DM09/Themis is C in Mahlke+ 2022, C in DeMeo+ 2009, and G in Tholen 1984
M4AST/Adorea is S in Mahlke+ 2022, in DeMeo+ 2009, and in Tholen 1984
M4AST/Lipperta is P in Mahlke+ 2022, X in DeMeo+ 2009, and in Tholen 1984
M4AST/Lermontov is P in Mahlke+ 2022, C in DeMeo+ 2009, and in Tholen 1984
Coming soon.
Visualise and export.
Quick-look plots at any step to verify your analysis.
Example: Show the spectra and the classification results.
$ classy classify --wave_min 0.45 --wave_max 1.8 --family Themis --albedo ,0.06 --plot
>>> spectra.plot(taxonomy='mahlke')
Coming soon.