WELCOME¶
Warning
Note, that this package is currently under development. Most functionalities should work, but changes will be implemented on a running basis and without notice. No tests have been performed yet.
Note
This page summarizes the most common characteristics, pitfalls etc. Please refer to the paper (in prep) for a more detailed list and Tutorials for solutions to some known issues/missing features.
Reference¶
If you use this code in your work please use this entry in your bibliography (for now):
@ARTICLE{Steinwender2026_Lstein,
author = {{Steinwender}, Lukas and {M{\"o}ller}, Anais and {Fluke}, Christopher J.},
title = "{LStein: A new approach to visualizing sparse 2.5-dimensional data}",
journal = {arXiv e-prints},
keywords = {Instrumentation and Methods for Astrophysics},
year = 2026,
month = apr,
eid = {arXiv:2604.24034},
pages = {arXiv:2604.24034},
doi = {10.48550/arXiv.2604.24034},
archivePrefix = {arXiv},
eprint = {2604.24034},
primaryClass = {astro-ph.IM},
adsurl = {https://ui.adsabs.harvard.edu/abs/2026arXiv260424034S},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
Installation¶
You can easily install the package using pip:
pip3 install git+https://github.com/TheRedElement/LStein.git
Quick Start¶
Data used for Tutorials can be found in data/.
There are also a few other datasets so feel free to have a play around.
Each dataset is a .csv file with the following columns:
Column |
Description |
|---|---|
\(\theta\)-values |
values to be plotted as azimuthal offset of the panel |
\(x\)-values |
values to be plotted radially |
\(y\)-values |
values to be plotted as an azimuthal offset constraint to a circle-sector |
\(y\)-errors |
errors assigned to \(y\)-values |
|
which processing was used |
The demo will behave as follows:
take the first 3 columns (in order) as \(\theta\)-, \(x\)-, \(y\)-values
take the column names as axis-labels
plot a scatter for
processing context="raw"plot a line for
processing context!="raw"
You can try your own data as well, but make sure to
follow the above-mentioned conventions
add at least one row with
processing context!="raw"if you just have raw data, you can always just duplicate the rows and change half of the rows to
processing context!="raw"
Example Plots¶
|
|
Example for visualizing an ELAsTICC SN Ia. I compare |
Example for visualizing an ELAsTICC TDE. I compare |
|
|
Example for visualizing an ELAsTICC SN II. I compare |
Example for visualizing a set of artificially simulated sine waves. I compare |
Advantages and Downsides¶
Pros¶
no overcrowded panels
similar \(\theta\)-values (i.e., passbands) are plotted closer together
allows to preserve amplitude-differences across \(\theta\)-values for same \(y\)-values
allows depicting arbitrary number of \(\theta\)-values (by means of reducing the angular size of each \(\theta\)-panel)
works for people with color-blindness due to relational display of information
can be applied to variety of data (not only lightcurves)
examples: spectra over time, different machine learning models, spiking neural networks
layout entirely customizable
Cons¶
projection effects close to
xmindoes currently not support plotting errorbars
workaround: plot another line if you want to indicate uncertainties
Known Bugs¶
Open¶
Resolved¶
y_projection_method="theta"goes haywire for huge \(x\)-values (for sure \(x\ge10000\))the reason is the necessity to compute \(\tan\) and \(arc\tan\) when converting back and forth between coordinate systems
workarounds
formulate your series relative to some value so you remain in a reasonable range
use
y_projection_method="y"
TODO¶
update README.md once paper published
remove warning
adjust note



