Tutorial

1. Introduction

A time series is a sequence of observations, or data points, that is arranged based on the times of their occurrence. The hourly measurement of wind speeds in meteorology, the minute by minute recording of electrical activity along the scalp in electroencephalography, and the weekly changes of stock prices in finances are just some examples of time series, among many others.

Some of the following properties may be observed in time series data [gutsequential]:

  • the data is not generated independently

  • their dispersion varies in time

  • they are often governed by a trend and/or have cyclic components

The study and analysis of time series can have multiple ends: to gain a better understanding of the mechanism generating the data, to predict future outcomes and behaviors, to classify and characterize events, or more.

[2]:
ts_anim()
[2]:

In time-domain astronomy, data gathered from telescopes is usually represented in the form of light curves, which are time series that show the brightness variation of an object over a period of time (for a visual representation, see the video below). Based on the variability characteristics of the light curves, celestial objects can be classified into different groups (quasars, long-period variables, eclipsing binaries, etc.) and consequently studied in depth independently.

Classification of data into groups can be performed in several ways given light curve data. Primarily, existing methods found in the literature use machine learning algorithms that group light curves into categories through feature extraction from the light curve data. These light curve features—the topic of this work—are numerical or categorical properties of the light curves that can be used to characterize and distinguish the different variability classes. Features can range from basic statistical properties such as the mean or standard deviation to more complex time series characteristics such as the autocorrelation function. Ideally, these features should be informative and discriminative, allowing machine learning or other algorithms to use them to distinguish between classes of light curves.

This document describes a tool that allows for the fast and efficient calculation of a compilation of many existing light curve features. The main goal is to create a collaborative and open tool where users can characterize or analyze an astronomical photometric database while also contributing to the library by adding new features. However, it is important to highlight that this library is not necessarily restricted to the astronomical domain and can also be applied to any kind of time series data.

Our vision is to be able to analyze and compare light curves from any available astronomical catalog in a standard and universal way. This would facilitate and make more efficient tasks such as modeling, classification, data cleaning, outlier detection, and data analysis in general. Consequently, when studying light curves, astronomers and data analysts using our library would be able to compare and match different features in a standardized way. To achieve this goal, the library should be run and features generated for every existing survey (MACHO, EROS, OGLE, Catalina, Pan-STARRS, VVV, etc.), as well as for future surveys (LSST), and the results shared openly, as is this library.

In the remainder of this document, we provide an overview of the features developed so far and explain how users can contribute to the library. A README file is also available for extra information.

Video 1: Light-curve of triple star

The video below shows how data from the brightness intensity of a star through time results on a light-curve. In this particular case we are observing a complex triple system in which three stars have mutual eclipses as each of the stars gets behind or in front of the others.

[3]:
macho_video()
[3]:

The following figure presents example light-curves of each class in the MACHO survey. The x-axis is the modified Julian Date (MJD), and the y-axis is the MACHO B-magnitude.

[4]:
macho_example11()
[4]:
_images/tutorial_6_0.jpg

2. The library

feets (feATURE eXTRACTOR FOR tIME sERIES) is a Python library designed for fast and efficient calculation of a wide range of light-curve features.

You can install the library directly from PyPI using pip:

pip install feets

Alternatively, you can download the source code or contribute new features via pull requests on GitHub: https://github.com/quatrope/feets. For a quick guide to using GitHub, visit https://guides.github.com/activities/hello-world/.

Input data vectors

The library accepts time series data vectors as input, and returns the calculated features as output. The set of features that can be computed depends on the available input vectors. For example, if only magnitude and time are provided, only features requiring those vectors will be calculated.

To compute all possible features, the following vectors (also referred to as raw data) are needed for each light curve:

  • time

  • magnitude

  • error

  • time2

  • magnitude2

  • error2

  • flux

  • flux_error

Here, the suffix 2 indicates a different observation band.

Below is an example of how the input might look if you have only magnitude and time vectors available:

[5]:
lc_example = np.array([time_ex, magnitude_ex])
lc_example
[5]:
array([[0.00000000e+00, 1.00000000e+00, 2.00000000e+00, 3.00000000e+00,
        4.00000000e+00, 5.00000000e+00, 6.00000000e+00, 7.00000000e+00,
        8.00000000e+00, 9.00000000e+00, 1.00000000e+01, 1.10000000e+01,
        1.20000000e+01, 1.30000000e+01, 1.40000000e+01, 1.50000000e+01,
        1.60000000e+01, 1.70000000e+01, 1.80000000e+01, 1.90000000e+01,
        2.00000000e+01, 2.10000000e+01, 2.20000000e+01, 2.30000000e+01,
        2.40000000e+01, 2.50000000e+01, 2.60000000e+01, 2.70000000e+01,
        2.80000000e+01, 2.90000000e+01],
       [1.52512421e-01, 6.91870898e-01, 3.51065233e-01, 1.70651992e-03,
        7.40076851e-01, 3.09347390e-01, 8.58862629e-02, 4.55181604e-02,
        3.21153924e-02, 5.18202896e-01, 9.70619463e-01, 9.53391511e-01,
        6.90576675e-01, 7.59149975e-01, 7.70791375e-01, 6.33311579e-02,
        8.09513022e-01, 7.45320879e-01, 8.33692892e-01, 6.08258035e-01,
        6.82890305e-01, 6.29338787e-01, 9.73110118e-02, 5.99520419e-01,
        2.66047089e-01, 2.76743822e-01, 9.62053925e-01, 5.10085356e-01,
        9.39188979e-01, 8.85351149e-01]])

When observed in different bands, light curves of a same object are not always monitored for the same time length and at the same precise times. For some features, it is important to align the light curves and to only consider the simultaneous measurements from both bands. The aligned vectors refer to the arrays obtained by synchronizing the raw data.

Thus, the actual input needed by the library is a dictionary containing the following vectors:

  • time

  • magnitude

  • error

  • flux

  • flux_error

  • magnitude2

  • aligned_time

  • aligned_magnitude

  • aligned_magnitude2

  • aligned_error

  • aligned_error2

Not every data vector is required for every feature: the specific requirements depend on the features you choose to calculate. The more data vectors you provide, the more features that can be extracted. While the magnitude is the most commonly used input, some features require flux or other vectors. At least one data vector must be supplied to compute any feature.

Library structure

The library is divided into two main parts:

  1. feets.FeatureSpace: A wrapper class that allows you to select the features to be calculated based on the available time series vectors or by specifying a list of features. This is the main entry point for using feets.

  2. feets.extractors: A package containing the actual code for calculating the features, and multiple tools to create your own extractor. Each feature has its own extractor class, and every extractor can compute at least one feature.

3. Reading an example light-curve

feets includes functionalities to download and read light curves from the existing catalogs of MACHO and OGLE-III.

MACHO

You can load an example light curve from the MACHO survey.

[6]:
from feets.datasets import macho

macho_dataset = macho.load_MACHO_example()
print("ID:", macho_dataset._id)
print("Bands:", macho_dataset.bands)

# Visualize the light curve for the B band
import matplotlib.pyplot as plt
plt.plot(macho_dataset.data.B.time, macho_dataset.data.B.magnitude, "*-", alpha=0.6)
plt.xlabel("Time")
plt.ylabel("Magnitude")
plt.gca().invert_yaxis()
plt.show()
ID: lc_1.3444.614
Bands: ('R', 'B')
_images/tutorial_11_1.png

OGLE-III

You can also fetch light curves from the OGLE-III catalog by providing a valid ID.

[7]:
from feets.datasets import ogle3

# This will download the data if not found locally
ogle3_dataset = ogle3.fetch_OGLE3("OGLE-BLG-LPV-232377")
print("ID:", ogle3_dataset._id)
print("Bands:", ogle3_dataset.bands)


# Visualize the light curve for the I band
import matplotlib.pyplot as plt
plt.plot(ogle3_dataset.data.I.time, ogle3_dataset.data.I.magnitude, "*-", alpha=0.6)
plt.xlabel("Time")
plt.ylabel("Magnitude")
plt.gca().invert_yaxis()
plt.show()
ID: OGLE-BLG-LPV-232377
Bands: ('V', 'I')
_images/tutorial_13_1.png

4. Preprocessing

Before feature extraction, it’s common to preprocess the data. feets provides tools for:

  • Removing noise: Points beyond a certain standard deviation from the mean are eliminated.

  • Aligning: Synchronizes light curves from two different bands for simultaneous measurements.

[8]:
import feets.preprocess

# Use the raw MACHO light curve from the previous step
b_band = macho_dataset.data.B
r_band = macho_dataset.data.R

# Remove noise from the data
time, mag, error = feets.preprocess.remove_noise(
    time=b_band.time,
    magnitude=b_band.magnitude,
    error=b_band.error,
)
time2, mag2, error2 = feets.preprocess.remove_noise(
    time=r_band.time,
    magnitude=r_band.magnitude,
    error=r_band.error,
)

# Synchronize the data from the two bands
atime, amag, amag2, aerror, aerror2 = feets.preprocess.align(
    time, time2, mag, mag2, error, error2
)

# For convenience, we store the preprocessed data in a dictionary.
lc = {
    "time": time,
    "magnitude": mag,
    "error": error,
    "magnitude2": mag2,
    "time2": time2,
    "error2": error2,
    "aligned_time": atime,
    "aligned_magnitude": amag,
    "aligned_magnitude2": amag2,
    "aligned_error": aerror,
    "aligned_error2": aerror2,
}

print(lc)
{'time': array([48823.477419, 48823.487014, 48823.496759, ..., 51531.401331,
       51541.344537, 51546.325197], shape=(1194,)), 'magnitude': array([-6.081, -6.041, -6.046, ..., -6.009, -5.985, -5.997], shape=(1194,)), 'error': array([0.156, 0.141, 0.167, ..., 0.043, 0.024, 0.027], shape=(1194,)), 'magnitude2': array([-5.726, -6.09 , -5.751, -5.455, -5.561, -5.593, -5.732, -5.584,
       -5.66 , -5.667, -5.037, -5.423, -5.431, -5.56 , -5.73 , -6.409,
       -5.755, -5.584, -5.786, -5.591, -5.648, -5.849, -5.638, -5.636,
       -5.642, -5.649, -5.748, -5.733, -5.849, -5.719, -5.477, -5.385,
       -5.446, -5.253, -5.552, -5.117, -5.283, -5.759, -5.544, -5.722,
       -5.717, -5.643, -5.622, -5.686, -5.709, -5.477, -5.562, -5.614,
       -5.606, -5.689, -5.213, -5.58 , -5.736, -5.698, -5.759, -5.281,
       -5.271, -5.432, -5.854, -5.682, -5.786, -5.659, -5.698, -5.529,
       -5.393, -5.248, -5.693, -5.521, -5.649, -5.621, -5.629, -5.637,
       -5.64 , -5.849, -5.558, -5.719, -5.543, -5.574, -6.139, -5.597,
       -5.526, -5.726, -5.665, -5.717, -5.695, -5.8  , -5.58 , -5.248,
       -5.549, -5.372, -5.524, -5.541, -5.333, -5.586, -5.464, -5.639,
       -5.678, -5.692, -5.628, -5.678, -5.606, -5.651, -5.676, -5.639,
       -5.378, -5.265, -5.498, -5.594, -5.62 , -5.715, -5.602, -5.677,
       -5.688, -5.565, -5.647, -5.6  , -5.286, -5.532, -5.651, -5.583,
       -5.638, -5.69 , -5.59 , -5.686, -5.164, -5.735, -5.68 , -5.648,
       -5.641, -5.272, -5.56 , -5.649, -5.611, -5.76 , -5.718, -5.6  ,
       -5.604, -5.627, -5.623, -5.656, -5.65 , -5.592, -5.671, -5.595,
       -5.688, -5.731, -5.698, -5.18 , -5.391, -5.847, -5.604, -5.665,
       -5.862, -5.566, -5.624, -5.649, -5.68 , -5.64 , -5.722, -5.701,
       -5.457, -5.269, -5.648, -5.665, -5.544, -5.561, -5.581, -5.685,
       -5.605, -5.389, -5.558, -5.484, -5.371, -5.438, -5.5  , -5.483,
       -5.698, -5.694, -5.687, -5.819, -5.54 , -5.515, -5.657, -5.638,
       -5.701, -5.645, -5.653, -6.029, -5.661, -6.064, -5.207, -5.267,
       -5.605, -5.63 , -5.552, -5.589, -5.548, -5.614, -5.679, -5.12 ,
       -5.169, -5.606, -5.633, -5.594, -5.645, -5.584, -5.618, -5.577,
       -5.516, -5.278, -5.637, -5.68 , -5.43 , -5.591, -5.723, -5.591,
       -5.811, -5.855, -5.626, -5.681, -5.534, -5.377, -5.635, -5.711,
       -5.589, -5.559, -5.691, -5.476, -5.581, -5.512, -5.388, -5.692,
       -5.633, -5.654, -5.373, -5.338, -5.535, -5.65 , -5.662, -5.559,
       -5.583, -5.666, -5.634, -5.637, -5.654, -5.634, -5.556, -5.621,
       -5.635, -5.621, -5.151, -5.465, -5.642, -5.141, -5.47 , -5.596,
       -5.616, -5.638, -5.67 , -5.53 , -5.65 , -5.662, -5.69 , -5.673,
       -5.529, -5.631, -5.616, -5.999, -5.552, -5.248, -5.494, -5.75 ,
       -5.745, -5.85 , -5.646, -5.655, -5.68 , -5.553, -5.555, -5.626,
       -5.591, -5.7  , -5.631, -5.956, -5.777, -5.585, -5.575, -5.203,
       -5.549, -5.681, -5.683, -5.67 , -5.621, -5.667, -5.788, -5.428,
       -5.487, -5.426, -5.167, -5.562, -5.34 , -5.375, -5.337, -5.244,
       -5.598, -6.012, -5.994, -5.629, -5.58 , -5.6  , -5.623, -5.652,
       -5.659, -5.548, -5.738, -5.577, -5.481, -5.609, -5.418, -5.629,
       -5.401, -5.522, -5.398, -5.809, -5.332, -5.646, -5.636, -5.61 ,
       -5.651, -5.604, -5.618, -5.612, -5.639, -5.631, -5.723, -5.706,
       -5.465, -5.291, -5.133, -5.496, -5.469, -5.548, -5.556, -5.693,
       -5.622, -5.653, -5.736, -5.667, -5.351, -5.463, -5.328, -5.537,
       -5.637, -5.507, -5.679, -5.724, -5.758, -5.764, -5.477, -5.565,
       -6.001, -5.578, -5.649, -5.427, -5.58 , -5.713, -5.802, -5.626,
       -5.651, -5.632, -5.618, -5.707, -5.696, -5.593, -5.413, -5.208,
       -5.552, -5.62 , -5.592, -5.647, -5.616, -5.592, -5.645, -5.651,
       -5.57 , -5.222, -5.485, -5.344, -5.638, -5.634, -5.682, -5.609,
       -5.354, -5.388, -5.417, -5.647, -5.727, -5.621, -5.572, -5.671,
       -5.656, -5.68 , -5.471, -5.609, -5.616, -5.668, -5.664, -5.584,
       -5.61 , -5.386, -5.435, -5.531, -5.611, -5.6  , -5.603, -5.831,
       -5.71 , -5.641, -5.689, -5.696, -5.74 , -5.659, -5.386, -5.584,
       -5.212, -5.627, -5.596, -5.671, -5.149, -5.798, -5.649, -5.616,
       -5.779, -5.221, -5.645, -5.608, -5.689, -5.675, -5.592, -5.811,
       -5.601, -5.575, -5.53 , -5.516, -5.32 , -5.346, -5.461, -5.67 ,
       -5.633, -5.667, -5.599, -5.853, -5.615, -5.597, -5.701, -5.66 ,
       -5.629, -5.521, -5.363, -5.534, -5.784, -5.561, -5.629, -5.584,
       -5.583, -5.425, -5.616, -5.435, -5.37 , -5.658, -5.612, -5.585,
       -5.557, -5.544, -5.621, -5.708, -5.616, -5.819, -5.605, -5.601,
       -5.244, -5.307, -5.625, -5.647, -5.196, -5.543, -5.632, -5.83 ,
       -5.623, -5.66 , -5.632, -5.629, -5.788, -5.62 , -5.683, -5.625,
       -5.348, -5.689, -5.615, -5.693, -5.76 , -5.667, -5.415, -5.609,
       -5.7  , -5.642, -5.562, -5.634, -5.652, -5.289, -5.609, -5.21 ,
       -5.636, -5.401, -5.731, -5.663, -5.747, -5.725, -5.601, -5.574,
       -5.69 , -5.721, -5.778, -5.61 , -5.305, -5.692, -5.637, -5.583,
       -5.632, -5.775, -5.634, -5.718, -5.352, -5.664, -5.62 , -5.502,
       -5.813, -5.249, -5.498, -5.55 , -5.621, -5.645, -5.635, -5.582,
       -5.51 , -5.436, -5.535, -5.638, -5.658, -5.586, -5.599, -5.512,
       -5.516, -5.662, -5.628, -5.783, -5.599, -5.651, -5.603, -5.552,
       -5.482, -5.588, -5.223, -5.519, -5.405, -5.602, -5.634, -5.695,
       -5.595, -5.653, -5.586, -5.621, -5.713, -5.711, -5.622, -5.611,
       -5.513, -5.537, -5.338, -5.426, -5.668, -5.613, -5.649, -5.622,
       -5.634, -5.616, -5.573, -5.535, -5.514, -5.611, -5.611, -5.649,
       -5.633, -5.3  , -5.278, -5.528, -5.19 , -5.56 , -5.612, -5.633,
       -5.37 , -5.642, -5.367, -5.38 , -5.705, -5.62 , -5.291, -5.763,
       -5.553, -5.591, -5.589, -5.548, -5.561, -5.361, -5.533, -5.637,
       -5.22 , -5.384, -5.489, -5.595, -5.581, -5.63 , -5.547, -5.31 ,
       -5.617, -5.516, -5.642, -5.655, -5.627, -5.66 , -5.579, -5.391,
       -5.596, -5.666, -5.652, -5.52 , -5.659, -5.382, -5.459, -5.646,
       -5.741, -5.529, -5.475, -5.595, -5.674, -5.532, -5.627, -5.677,
       -5.652, -5.619, -5.549, -5.699, -5.162, -5.588, -5.719, -5.59 ,
       -5.338, -5.675, -5.588, -5.512, -5.416, -5.605, -5.622, -5.659,
       -5.381, -5.482, -5.572, -5.644, -5.561, -5.636, -5.595, -5.725,
       -5.638, -5.642, -5.634, -5.605, -5.225, -5.538, -5.646, -5.622,
       -5.537, -5.624, -5.661, -5.333, -5.652, -5.586, -5.635, -5.579,
       -5.534, -5.509, -5.597, -5.638, -5.608, -5.614, -5.217, -5.557,
       -5.64 , -5.608, -5.418, -5.594, -5.737, -5.24 , -5.652, -5.593,
       -5.708, -5.598, -5.626]), 'time2': array([48823.487014, 48823.496759, 48824.458206, 48824.467697,
       48824.477639, 48825.483183, 48825.492847, 48825.502824,
       48826.46463 , 48826.491319, 48828.585961, 48828.656701,
       48829.456285, 48829.584769, 48829.659965, 48831.461817,
       48831.564722, 48831.63897 , 48831.661551, 48832.459769,
       48832.65125 , 48833.569375, 48834.430926, 48834.515544,
       48834.639225, 48835.571053, 48835.606296, 48836.564236,
       48841.441516, 48841.541134, 48841.633623, 48842.458345,
       48842.565046, 48842.632581, 48843.416875, 48843.562419,
       48843.64015 , 48849.5836  , 48850.497442, 48851.481181,
       48851.59765 , 48853.645799, 48854.557338, 48855.527002,
       48855.579722, 48856.609769, 48882.423356, 48884.469873,
       48885.43728 , 48887.500475, 48888.555648, 48892.592604,
       48894.561655, 48895.587106, 48896.589398, 48906.407998,
       48907.393912, 48908.278576, 48909.39735 , 48914.57809 ,
       48915.430718, 48916.516921, 48917.352616, 48919.355104,
       48919.441273, 48919.516227, 48919.599155, 48920.286863,
       48923.513403, 48927.261887, 48928.290602, 48929.238299,
       48929.449583, 48930.241771, 48931.239676, 48931.425579,
       48933.393738, 48935.39787 , 48937.415289, 48937.43831 ,
       48938.280475, 48939.296157, 48939.460255, 48941.356863,
       48941.48287 , 48947.395671, 48947.518785, 48948.477627,
       48949.293924, 48964.443623, 48965.279294, 48965.417766,
       48966.282199, 48966.397812, 48974.325278, 48984.27625 ,
       48985.303611, 48985.432188, 48987.291701, 48987.420023,
       48988.279826, 48988.402917, 48988.421447, 48989.301412,
       48989.40787 , 48996.248657, 48996.36287 , 48998.250903,
       48998.360602, 49000.265278, 49001.253808, 49002.251262,
       49003.34735 , 49004.244248, 49006.260463, 49007.268877,
       49010.352685, 49011.340336, 49015.25419 , 49016.253032,
       49018.277998, 49020.335648, 49021.28294 , 49024.250046,
       49025.28228 , 49029.25066 , 49031.271181, 49032.246528,
       49037.232407, 49040.268785, 49043.24875 , 49044.258819,
       49045.232731, 49048.229363, 49049.245069, 49051.225023,
       49059.226759, 49060.209271, 49061.212512, 49062.21044 ,
       49067.204433, 49069.206516, 49073.203194, 49074.196262,
       49075.18831 , 49083.215868, 49134.663275, 49140.62162 ,
       49141.622037, 49142.605845, 49143.606806, 49144.624734,
       49151.608009, 49152.604005, 49161.607766, 49162.580833,
       49163.60213 , 49163.615428, 49164.58853 , 49165.565984,
       49167.678912, 49169.604664, 49178.587569, 49179.548056,
       49180.515961, 49181.506146, 49181.661898, 49182.601771,
       49183.495266, 49183.656319, 49184.488773, 49185.500185,
       49186.510347, 49186.600104, 49188.483866, 49189.492315,
       49194.506377, 49194.670336, 49195.455972, 49196.490359,
       49199.517847, 49203.474479, 49204.47309 , 49208.461794,
       49209.440972, 49210.459005, 49211.490463, 49212.603762,
       49215.431887, 49216.418785, 49217.427801, 49218.417963,
       49219.434456, 49220.525185, 49221.414838, 49222.399861,
       49223.401736, 49224.387338, 49225.607593, 49233.381319,
       49233.412257, 49252.368484, 49253.374977, 49254.430914,
       49255.348565, 49256.361285, 49257.35706 , 49258.316123,
       49258.53647 , 49259.520359, 49260.341319, 49264.530856,
       49265.316053, 49266.396713, 49267.412257, 49268.371898,
       49269.411806, 49270.374954, 49272.406273, 49273.289282,
       49276.55794 , 49277.446852, 49279.537894, 49280.495324,
       49282.344294, 49283.271343, 49285.468495, 49286.282083,
       49287.361389, 49289.366065, 49290.569097, 49291.256968,
       49302.360058, 49303.214641, 49307.291134, 49309.253981,
       49311.303021, 49312.315012, 49313.270556, 49314.242569,
       49315.268507, 49317.270243, 49318.402569, 49372.256748,
       49375.265961, 49376.287199, 49378.241701, 49380.243715,
       49386.266238, 49390.256655, 49398.232836, 49399.237361,
       49400.256956, 49413.230787, 49414.246736, 49415.230278,
       49416.222951, 49417.228715, 49423.211713, 49426.216516,
       49432.217963, 49487.657442, 49488.648333, 49491.638252,
       49493.632824, 49494.640451, 49496.634977, 49500.662118,
       49511.603032, 49512.597743, 49513.642245, 49517.563102,
       49518.574329, 49518.584155, 49520.580926, 49521.659954,
       49522.590336, 49525.618044, 49530.650521, 49531.571065,
       49532.643148, 49534.609757, 49535.666181, 49537.653044,
       49538.613183, 49539.619271, 49540.600035, 49541.607407,
       49545.505961, 49546.50434 , 49546.66478 , 49550.642002,
       49551.620637, 49552.672813, 49553.463125, 49554.474803,
       49554.670185, 49555.5114  , 49555.650775, 49556.515694,
       49556.652164, 49557.598368, 49558.548252, 49559.483356,
       49559.660023, 49560.529965, 49560.669664, 49561.540579,
       49562.571782, 49566.465613, 49566.651667, 49567.502662,
       49567.65875 , 49568.540208, 49568.655775, 49569.508345,
       49569.658021, 49571.472593, 49571.65985 , 49572.479294,
       49572.492743, 49572.655312, 49573.470069, 49574.47088 ,
       49574.506725, 49577.450046, 49577.64081 , 49578.462928,
       49578.640104, 49579.47162 , 49579.635313, 49580.42772 ,
       49580.644201, 49581.477373, 49585.457824, 49586.463229,
       49587.461227, 49588.497789, 49589.427639, 49589.501157,
       49590.43566 , 49591.458102, 49592.427187, 49595.463808,
       49596.456875, 49597.525046, 49598.488704, 49599.492442,
       49601.566019, 49602.448519, 49604.465787, 49605.454722,
       49606.458333, 49607.334745, 49608.459375, 49609.485799,
       49610.43956 , 49611.44544 , 49612.442604, 49613.617975,
       49614.445602, 49616.469907, 49617.424745, 49618.422975,
       49620.455741, 49621.566123, 49622.454387, 49623.453935,
       49624.619896, 49625.435903, 49627.442859, 49628.49478 ,
       49629.496192, 49630.418403, 49633.364213, 49634.353623,
       49635.423981, 49636.394769, 49637.476331, 49638.451065,
       49639.399329, 49640.433588, 49641.543287, 49642.343148,
       49645.324005, 49647.533079, 49648.334387, 49649.330694,
       49651.453623, 49653.393981, 49654.359919, 49660.436725,
       49664.478218, 49665.333646, 49666.287361, 49667.415822,
       49670.306794, 49671.266678, 49672.243854, 49673.356007,
       49674.490833, 49676.306979, 49681.29191 , 49682.310359,
       49687.295926, 49688.30809 , 49689.372025, 49690.299375,
       49691.344016, 49692.365949, 49693.317627, 49695.347037,
       49696.342384, 49697.362593, 49698.467141, 49699.47853 ,
       49700.309792, 49702.322581, 49703.392674, 49704.317535,
       49705.381458, 49715.2764  , 49723.303125, 49727.280833,
       49883.671562, 49901.667627, 49905.641829, 49907.633657,
       49912.645428, 49916.661736, 49917.610382, 49921.552639,
       49927.471157, 49929.56    , 49931.629039, 49933.468576,
       49935.583218, 49936.571076, 49937.586053, 49938.456979,
       49939.483796, 49940.621991, 49941.465301, 49942.537986,
       49943.530891, 49944.553102, 49945.536076, 49946.6225  ,
       49947.625185, 49948.572234, 49949.429433, 49951.449595,
       49952.529676, 49953.4464  , 49954.534132, 49955.621678,
       49957.399525, 49958.651366, 49961.412928, 49963.594375,
       49965.458472, 49966.511157, 49967.406146, 49969.372153,
       49970.369016, 49971.638762, 49972.382523, 49973.617662,
       49974.58522 , 49980.410174, 49982.345081, 49986.396597,
       49987.355741, 49994.384502, 49994.591169, 49995.560822,
       49996.418924, 49997.475694, 49998.499271, 50003.433958,
       50005.414317, 50006.400417, 50007.482419, 50013.367569,
       50019.431563, 50021.427106, 50022.459444, 50029.303681,
       50031.341771, 50033.305185, 50038.379792, 50038.497442,
       50044.288241, 50045.364687, 50046.350023, 50047.425162,
       50048.404525, 50054.307326, 50057.329583, 50058.341435,
       50061.340069, 50063.310532, 50066.343727, 50071.280058,
       50072.342384, 50074.310822, 50077.3814  , 50088.32625 ,
       50089.320174, 50091.352442, 50091.397766, 50095.346123,
       50105.323831, 50239.614225, 50263.606863, 50271.673738,
       50276.58662 , 50276.630868, 50278.531366, 50293.575972,
       50296.587257, 50297.571493, 50300.48588 , 50301.640856,
       50302.494236, 50303.644375, 50304.540035, 50305.650058,
       50307.474398, 50308.553322, 50310.596296, 50311.551829,
       50315.522326, 50319.613287, 50320.65066 , 50322.451262,
       50327.576736, 50329.582963, 50333.468056, 50333.502755,
       50335.508542, 50340.602083, 50341.470532, 50341.510822,
       50346.553021, 50348.359016, 50349.473646, 50350.439861,
       50352.399074, 50353.335069, 50359.408993, 50360.43603 ,
       50364.327083, 50364.587326, 50366.428958, 50368.368183,
       50369.38897 , 50370.372407, 50371.355532, 50374.373229,
       50376.353032, 50376.594803, 50377.381829, 50379.399294,
       50380.354086, 50384.385729, 50385.436146, 50385.440567,
       50389.284641, 50394.528287, 50395.369919, 50396.480567,
       50397.426898, 50399.43816 , 50401.424722, 50405.291933,
       50406.291273, 50406.524664, 50407.324433, 50409.296065,
       50410.372743, 50411.374387, 50416.480475, 50417.50015 ,
       50419.286921, 50419.342755, 50420.339109, 50422.45103 ,
       50424.297419, 50425.49044 , 50426.336042, 50428.412616,
       50429.480602, 50436.396134, 50437.320799, 50438.360868,
       50451.391343, 50607.641435, 50614.629676, 50639.547373,
       50642.505359, 50647.56537 , 50656.612465, 50659.485463,
       50661.623356, 50669.50375 , 50670.656597, 50675.471111,
       50679.422627, 50680.600741, 50682.453773, 50684.616181,
       50689.564086, 50701.557454, 50704.54147 , 50714.465521,
       50717.550937, 50719.490475, 50721.385764, 50722.513032,
       50725.33294 , 50730.411238, 50731.536539, 50733.405359,
       50734.501377, 50736.366435, 50737.431053, 50739.340683,
       50742.305613, 50744.511667, 50746.385914, 50748.359039,
       50767.318912, 50769.392164, 50771.453843, 50775.478056,
       50785.319896, 50796.309884, 50808.316435, 50812.365208,
       50973.558808, 50994.63103 , 51000.587037, 51005.552847,
       51017.536748, 51028.466447, 51033.648148, 51047.619815,
       51051.538252, 51056.406933, 51061.467326, 51072.414873,
       51073.585567, 51082.594711, 51085.362014, 51086.581412,
       51089.466771, 51097.459722, 51099.576968, 51102.371123,
       51106.435984, 51109.472373, 51111.477662, 51113.547731,
       51118.432083, 51120.48103 , 51136.526806, 51141.342674,
       51147.454086, 51156.269641, 51183.344514, 51188.24287 ,
       51350.66985 , 51382.605521, 51389.617257, 51393.557442,
       51401.545359, 51405.657141, 51408.601852, 51411.592847,
       51414.526968, 51421.462396, 51424.478356, 51431.46713 ,
       51433.593194, 51435.568542, 51440.429317, 51443.546042,
       51450.408218, 51462.365278, 51463.537118, 51468.473854,
       51471.379803, 51472.524039, 51478.35787 , 51479.490509,
       51484.263657, 51488.448588, 51491.480567, 51493.515324,
       51495.492697, 51505.470833, 51510.444271, 51513.293056,
       51514.451319, 51526.316157, 51541.344537]), 'error2': array([0.181, 0.143, 0.073, 0.084, 0.076, 0.065, 0.061, 0.068, 0.106,
       0.094, 0.132, 0.099, 0.06 , 0.166, 0.084, 0.144, 0.088, 0.046,
       0.076, 0.094, 0.079, 0.096, 0.064, 0.051, 0.041, 0.111, 0.085,
       0.196, 0.1  , 0.044, 0.059, 0.195, 0.074, 0.078, 0.154, 0.129,
       0.09 , 0.077, 0.104, 0.097, 0.091, 0.068, 0.047, 0.042, 0.041,
       0.053, 0.06 , 0.054, 0.035, 0.087, 0.064, 0.056, 0.067, 0.04 ,
       0.038, 0.082, 0.124, 0.033, 0.105, 0.076, 0.09 , 0.053, 0.033,
       0.039, 0.078, 0.086, 0.075, 0.056, 0.033, 0.056, 0.038, 0.057,
       0.03 , 0.084, 0.054, 0.032, 0.048, 0.129, 0.209, 0.088, 0.055,
       0.045, 0.053, 0.047, 0.047, 0.085, 0.094, 0.048, 0.034, 0.106,
       0.11 , 0.076, 0.084, 0.066, 0.139, 0.045, 0.033, 0.036, 0.026,
       0.04 , 0.043, 0.051, 0.051, 0.046, 0.18 , 0.052, 0.053, 0.03 ,
       0.035, 0.045, 0.036, 0.029, 0.045, 0.038, 0.026, 0.072, 0.028,
       0.097, 0.043, 0.047, 0.035, 0.057, 0.045, 0.081, 0.082, 0.051,
       0.076, 0.063, 0.023, 0.053, 0.032, 0.053, 0.031, 0.057, 0.071,
       0.047, 0.027, 0.028, 0.031, 0.04 , 0.045, 0.046, 0.051, 0.056,
       0.055, 0.11 , 0.065, 0.156, 0.141, 0.176, 0.139, 0.099, 0.203,
       0.066, 0.096, 0.104, 0.061, 0.052, 0.074, 0.098, 0.253, 0.105,
       0.055, 0.071, 0.065, 0.122, 0.034, 0.073, 0.19 , 0.107, 0.093,
       0.063, 0.16 , 0.104, 0.093, 0.09 , 0.074, 0.057, 0.073, 0.081,
       0.082, 0.093, 0.065, 0.104, 0.105, 0.072, 0.054, 0.143, 0.178,
       0.226, 0.049, 0.063, 0.152, 0.176, 0.09 , 0.036, 0.06 , 0.085,
       0.05 , 0.239, 0.197, 0.045, 0.061, 0.038, 0.065, 0.048, 0.031,
       0.106, 0.038, 0.086, 0.061, 0.08 , 0.096, 0.054, 0.073, 0.057,
       0.079, 0.074, 0.035, 0.051, 0.036, 0.041, 0.056, 0.067, 0.041,
       0.049, 0.112, 0.068, 0.052, 0.07 , 0.118, 0.068, 0.033, 0.041,
       0.037, 0.036, 0.064, 0.033, 0.058, 0.09 , 0.042, 0.025, 0.083,
       0.031, 0.052, 0.041, 0.093, 0.049, 0.046, 0.042, 0.037, 0.052,
       0.063, 0.044, 0.042, 0.027, 0.026, 0.039, 0.082, 0.034, 0.042,
       0.049, 0.223, 0.095, 0.274, 0.058, 0.171, 0.07 , 0.144, 0.16 ,
       0.053, 0.104, 0.117, 0.166, 0.159, 0.085, 0.059, 0.11 , 0.08 ,
       0.047, 0.042, 0.094, 0.035, 0.132, 0.082, 0.096, 0.091, 0.057,
       0.072, 0.086, 0.048, 0.066, 0.03 , 0.035, 0.117, 0.135, 0.077,
       0.204, 0.178, 0.074, 0.075, 0.1  , 0.177, 0.182, 0.043, 0.239,
       0.202, 0.072, 0.05 , 0.1  , 0.035, 0.037, 0.038, 0.068, 0.084,
       0.035, 0.045, 0.077, 0.139, 0.159, 0.143, 0.063, 0.081, 0.034,
       0.032, 0.072, 0.057, 0.048, 0.027, 0.035, 0.021, 0.043, 0.037,
       0.084, 0.081, 0.128, 0.086, 0.069, 0.058, 0.036, 0.041, 0.05 ,
       0.083, 0.052, 0.031, 0.029, 0.056, 0.068, 0.083, 0.051, 0.036,
       0.033, 0.03 , 0.177, 0.091, 0.06 , 0.087, 0.159, 0.126, 0.06 ,
       0.22 , 0.062, 0.106, 0.093, 0.032, 0.067, 0.11 , 0.065, 0.078,
       0.038, 0.058, 0.037, 0.074, 0.029, 0.048, 0.057, 0.056, 0.079,
       0.029, 0.048, 0.029, 0.033, 0.026, 0.052, 0.091, 0.063, 0.048,
       0.143, 0.043, 0.056, 0.079, 0.041, 0.066, 0.043, 0.05 , 0.041,
       0.052, 0.098, 0.062, 0.064, 0.094, 0.094, 0.033, 0.046, 0.155,
       0.048, 0.037, 0.022, 0.019, 0.022, 0.025, 0.061, 0.031, 0.019,
       0.038, 0.133, 0.112, 0.062, 0.059, 0.077, 0.062, 0.081, 0.04 ,
       0.042, 0.098, 0.03 , 0.043, 0.062, 0.163, 0.065, 0.069, 0.146,
       0.071, 0.112, 0.07 , 0.041, 0.067, 0.057, 0.113, 0.092, 0.054,
       0.047, 0.058, 0.026, 0.047, 0.06 , 0.156, 0.076, 0.021, 0.08 ,
       0.058, 0.085, 0.031, 0.05 , 0.082, 0.081, 0.033, 0.149, 0.069,
       0.096, 0.147, 0.04 , 0.061, 0.064, 0.075, 0.044, 0.05 , 0.112,
       0.043, 0.086, 0.065, 0.043, 0.03 , 0.046, 0.039, 0.049, 0.043,
       0.144, 0.044, 0.098, 0.031, 0.044, 0.06 , 0.05 , 0.068, 0.061,
       0.07 , 0.103, 0.151, 0.041, 0.021, 0.031, 0.092, 0.042, 0.063,
       0.071, 0.054, 0.05 , 0.121, 0.051, 0.042, 0.046, 0.031, 0.023,
       0.063, 0.046, 0.019, 0.026, 0.032, 0.277, 0.025, 0.052, 0.047,
       0.146, 0.073, 0.047, 0.039, 0.151, 0.062, 0.273, 0.08 , 0.073,
       0.125, 0.065, 0.109, 0.063, 0.062, 0.052, 0.067, 0.072, 0.043,
       0.085, 0.04 , 0.032, 0.084, 0.14 , 0.096, 0.098, 0.074, 0.176,
       0.039, 0.056, 0.058, 0.051, 0.094, 0.182, 0.04 , 0.053, 0.109,
       0.052, 0.028, 0.028, 0.08 , 0.054, 0.031, 0.098, 0.021, 0.031,
       0.026, 0.041, 0.09 , 0.048, 0.033, 0.035, 0.123, 0.087, 0.061,
       0.055, 0.04 , 0.03 , 0.03 , 0.042, 0.063, 0.059, 0.054, 0.031,
       0.029, 0.037, 0.061, 0.067, 0.051, 0.043, 0.064, 0.065, 0.071,
       0.041, 0.031, 0.038, 0.049, 0.033, 0.025, 0.036, 0.077, 0.064,
       0.066, 0.066, 0.033, 0.04 , 0.088, 0.066, 0.062, 0.058, 0.082,
       0.035, 0.08 , 0.035, 0.127, 0.231, 0.061, 0.036, 0.079, 0.221,
       0.028, 0.029, 0.035, 0.038, 0.038, 0.054, 0.03 , 0.048, 0.056,
       0.021, 0.087, 0.088, 0.063, 0.199, 0.101, 0.109, 0.045, 0.042,
       0.039, 0.073, 0.037, 0.04 , 0.032, 0.1  , 0.037, 0.057, 0.098,
       0.029, 0.229, 0.076, 0.05 , 0.082, 0.053, 0.075, 0.049, 0.038,
       0.046, 0.054, 0.073, 0.07 , 0.071, 0.029, 0.08 , 0.113, 0.11 ,
       0.21 , 0.167, 0.076, 0.095, 0.027, 0.121, 0.08 , 0.074, 0.054,
       0.049, 0.036, 0.027, 0.035, 0.032, 0.05 , 0.055, 0.035, 0.099,
       0.063, 0.061, 0.052, 0.052, 0.083, 0.037, 0.04 , 0.044, 0.127,
       0.04 , 0.034, 0.05 , 0.048, 0.099, 0.147, 0.049, 0.038, 0.033,
       0.051, 0.075, 0.037, 0.052, 0.024, 0.065, 0.03 , 0.045, 0.063,
       0.024, 0.027, 0.04 , 0.026, 0.03 ]), 'aligned_time': array([48823.487014, 48823.496759, 48824.458206, 48824.467697,
       48824.477639, 48825.483183, 48825.492847, 48825.502824,
       48826.46463 , 48826.491319, 48828.585961, 48828.656701,
       48829.456285, 48829.584769, 48829.659965, 48831.564722,
       48831.63897 , 48831.661551, 48832.459769, 48832.65125 ,
       48833.569375, 48834.430926, 48834.515544, 48834.639225,
       48835.571053, 48835.606296, 48836.564236, 48841.441516,
       48841.541134, 48842.458345, 48843.416875, 48843.562419,
       48843.64015 , 48849.5836  , 48850.497442, 48851.481181,
       48851.59765 , 48853.645799, 48854.557338, 48855.527002,
       48855.579722, 48856.609769, 48882.423356, 48884.469873,
       48885.43728 , 48887.500475, 48888.555648, 48892.592604,
       48894.561655, 48895.587106, 48896.589398, 48906.407998,
       48907.393912, 48908.278576, 48909.39735 , 48914.57809 ,
       48915.430718, 48916.516921, 48917.352616, 48919.355104,
       48919.441273, 48919.516227, 48919.599155, 48920.286863,
       48923.513403, 48927.261887, 48928.290602, 48929.238299,
       48929.449583, 48930.241771, 48931.239676, 48931.425579,
       48933.393738, 48935.39787 , 48937.43831 , 48938.280475,
       48939.296157, 48939.460255, 48941.356863, 48941.48287 ,
       48947.395671, 48947.518785, 48948.477627, 48949.293924,
       48964.443623, 48965.279294, 48965.417766, 48966.282199,
       48966.397812, 48974.325278, 48984.27625 , 48985.303611,
       48985.432188, 48987.291701, 48987.420023, 48988.279826,
       48988.402917, 48988.421447, 48989.301412, 48989.40787 ,
       48996.248657, 48996.36287 , 48998.250903, 48998.360602,
       49000.265278, 49001.253808, 49002.251262, 49003.34735 ,
       49004.244248, 49006.260463, 49007.268877, 49011.340336,
       49015.25419 , 49016.253032, 49018.277998, 49020.335648,
       49021.28294 , 49024.250046, 49025.28228 , 49029.25066 ,
       49031.271181, 49032.246528, 49037.232407, 49040.268785,
       49043.24875 , 49044.258819, 49045.232731, 49048.229363,
       49049.245069, 49051.225023, 49059.226759, 49060.209271,
       49061.212512, 49062.21044 , 49067.204433, 49069.206516,
       49073.203194, 49074.196262, 49075.18831 , 49083.215868,
       49134.663275, 49140.62162 , 49141.622037, 49142.605845,
       49143.606806, 49144.624734, 49152.604005, 49161.607766,
       49162.580833, 49163.60213 , 49163.615428, 49164.58853 ,
       49165.565984, 49167.678912, 49169.604664, 49178.587569,
       49179.548056, 49181.506146, 49181.661898, 49182.601771,
       49183.495266, 49183.656319, 49184.488773, 49185.500185,
       49186.510347, 49186.600104, 49188.483866, 49189.492315,
       49194.506377, 49194.670336, 49195.455972, 49196.490359,
       49199.517847, 49203.474479, 49204.47309 , 49208.461794,
       49209.440972, 49210.459005, 49211.490463, 49212.603762,
       49215.431887, 49217.427801, 49218.417963, 49219.434456,
       49220.525185, 49221.414838, 49222.399861, 49223.401736,
       49224.387338, 49225.607593, 49233.381319, 49233.412257,
       49252.368484, 49253.374977, 49254.430914, 49255.348565,
       49256.361285, 49257.35706 , 49258.316123, 49258.53647 ,
       49259.520359, 49260.341319, 49264.530856, 49265.316053,
       49266.396713, 49267.412257, 49268.371898, 49269.411806,
       49270.374954, 49272.406273, 49273.289282, 49276.55794 ,
       49277.446852, 49279.537894, 49280.495324, 49282.344294,
       49283.271343, 49285.468495, 49286.282083, 49287.361389,
       49289.366065, 49290.569097, 49291.256968, 49302.360058,
       49303.214641, 49307.291134, 49309.253981, 49311.303021,
       49312.315012, 49313.270556, 49314.242569, 49315.268507,
       49317.270243, 49318.402569, 49372.256748, 49375.265961,
       49376.287199, 49378.241701, 49380.243715, 49386.266238,
       49390.256655, 49398.232836, 49399.237361, 49400.256956,
       49413.230787, 49414.246736, 49415.230278, 49416.222951,
       49417.228715, 49423.211713, 49426.216516, 49432.217963,
       49487.657442, 49488.648333, 49491.638252, 49493.632824,
       49494.640451, 49496.634977, 49500.662118, 49511.603032,
       49512.597743, 49513.642245, 49517.563102, 49518.574329,
       49518.584155, 49520.580926, 49521.659954, 49522.590336,
       49525.618044, 49530.650521, 49531.571065, 49532.643148,
       49534.609757, 49535.666181, 49537.653044, 49538.613183,
       49539.619271, 49540.600035, 49541.607407, 49545.505961,
       49546.50434 , 49546.66478 , 49550.642002, 49551.620637,
       49552.672813, 49553.463125, 49554.474803, 49554.670185,
       49555.5114  , 49555.650775, 49556.515694, 49556.652164,
       49557.598368, 49558.548252, 49559.483356, 49559.660023,
       49560.669664, 49561.540579, 49562.571782, 49566.465613,
       49566.651667, 49567.502662, 49567.65875 , 49568.540208,
       49568.655775, 49569.508345, 49569.658021, 49571.472593,
       49571.65985 , 49572.479294, 49572.492743, 49572.655312,
       49573.470069, 49574.47088 , 49574.506725, 49577.450046,
       49577.64081 , 49578.462928, 49578.640104, 49579.47162 ,
       49579.635313, 49580.42772 , 49580.644201, 49585.457824,
       49586.463229, 49587.461227, 49588.497789, 49589.427639,
       49589.501157, 49590.43566 , 49591.458102, 49592.427187,
       49595.463808, 49596.456875, 49597.525046, 49598.488704,
       49599.492442, 49601.566019, 49602.448519, 49604.465787,
       49605.454722, 49606.458333, 49607.334745, 49608.459375,
       49609.485799, 49610.43956 , 49611.44544 , 49612.442604,
       49613.617975, 49616.469907, 49617.424745, 49618.422975,
       49620.455741, 49621.566123, 49622.454387, 49623.453935,
       49624.619896, 49625.435903, 49627.442859, 49628.49478 ,
       49629.496192, 49630.418403, 49633.364213, 49634.353623,
       49635.423981, 49636.394769, 49637.476331, 49638.451065,
       49639.399329, 49640.433588, 49641.543287, 49642.343148,
       49645.324005, 49647.533079, 49648.334387, 49649.330694,
       49653.393981, 49654.359919, 49660.436725, 49664.478218,
       49665.333646, 49666.287361, 49667.415822, 49670.306794,
       49671.266678, 49672.243854, 49673.356007, 49674.490833,
       49676.306979, 49681.29191 , 49682.310359, 49687.295926,
       49688.30809 , 49689.372025, 49690.299375, 49691.344016,
       49692.365949, 49693.317627, 49695.347037, 49696.342384,
       49697.362593, 49698.467141, 49699.47853 , 49700.309792,
       49702.322581, 49703.392674, 49704.317535, 49705.381458,
       49715.2764  , 49723.303125, 49727.280833, 49883.671562,
       49901.667627, 49905.641829, 49907.633657, 49912.645428,
       49916.661736, 49917.610382, 49921.552639, 49927.471157,
       49929.56    , 49931.629039, 49933.468576, 49935.583218,
       49936.571076, 49937.586053, 49938.456979, 49939.483796,
       49940.621991, 49941.465301, 49942.537986, 49943.530891,
       49944.553102, 49945.536076, 49946.6225  , 49948.572234,
       49949.429433, 49951.449595, 49952.529676, 49953.4464  ,
       49954.534132, 49955.621678, 49957.399525, 49958.651366,
       49961.412928, 49963.594375, 49965.458472, 49966.511157,
       49967.406146, 49969.372153, 49970.369016, 49971.638762,
       49972.382523, 49973.617662, 49974.58522 , 49980.410174,
       49982.345081, 49986.396597, 49987.355741, 49994.384502,
       49994.591169, 49995.560822, 49996.418924, 49997.475694,
       49998.499271, 50003.433958, 50005.414317, 50006.400417,
       50007.482419, 50013.367569, 50019.431563, 50021.427106,
       50022.459444, 50029.303681, 50031.341771, 50033.305185,
       50038.379792, 50038.497442, 50045.364687, 50046.350023,
       50047.425162, 50048.404525, 50054.307326, 50057.329583,
       50058.341435, 50061.340069, 50063.310532, 50066.343727,
       50071.280058, 50072.342384, 50074.310822, 50077.3814  ,
       50088.32625 , 50089.320174, 50091.352442, 50091.397766,
       50095.346123, 50105.323831, 50239.614225, 50263.606863,
       50271.673738, 50276.58662 , 50276.630868, 50278.531366,
       50296.587257, 50297.571493, 50300.48588 , 50301.640856,
       50302.494236, 50303.644375, 50304.540035, 50305.650058,
       50307.474398, 50308.553322, 50310.596296, 50311.551829,
       50315.522326, 50319.613287, 50320.65066 , 50322.451262,
       50327.576736, 50329.582963, 50333.468056, 50333.502755,
       50335.508542, 50340.602083, 50341.470532, 50341.510822,
       50346.553021, 50348.359016, 50349.473646, 50350.439861,
       50352.399074, 50353.335069, 50359.408993, 50360.43603 ,
       50364.327083, 50364.587326, 50366.428958, 50368.368183,
       50369.38897 , 50370.372407, 50371.355532, 50374.373229,
       50376.353032, 50376.594803, 50377.381829, 50379.399294,
       50380.354086, 50384.385729, 50385.436146, 50385.440567,
       50389.284641, 50394.528287, 50395.369919, 50396.480567,
       50397.426898, 50399.43816 , 50401.424722, 50405.291933,
       50406.291273, 50406.524664, 50407.324433, 50409.296065,
       50410.372743, 50411.374387, 50416.480475, 50417.50015 ,
       50419.286921, 50419.342755, 50420.339109, 50422.45103 ,
       50424.297419, 50425.49044 , 50426.336042, 50428.412616,
       50429.480602, 50436.396134, 50437.320799, 50438.360868,
       50451.391343, 50607.641435, 50614.629676, 50639.547373,
       50642.505359, 50647.56537 , 50656.612465, 50659.485463,
       50661.623356, 50669.50375 , 50670.656597, 50679.422627,
       50680.600741, 50682.453773, 50684.616181, 50689.564086,
       50701.557454, 50704.54147 , 50714.465521, 50717.550937,
       50719.490475, 50721.385764, 50722.513032, 50725.33294 ,
       50730.411238, 50731.536539, 50733.405359, 50734.501377,
       50736.366435, 50737.431053, 50739.340683, 50742.305613,
       50744.511667, 50746.385914, 50748.359039, 50767.318912,
       50769.392164, 50771.453843, 50775.478056, 50785.319896,
       50796.309884, 50808.316435, 50812.365208, 50994.63103 ,
       51000.587037, 51005.552847, 51017.536748, 51028.466447,
       51033.648148, 51047.619815, 51051.538252, 51056.406933,
       51061.467326, 51072.414873, 51073.585567, 51082.594711,
       51085.362014, 51086.581412, 51089.466771, 51097.459722,
       51099.576968, 51102.371123, 51106.435984, 51109.472373,
       51111.477662, 51113.547731, 51118.432083, 51120.48103 ,
       51136.526806, 51141.342674, 51147.454086, 51156.269641,
       51183.344514, 51188.24287 , 51350.66985 , 51382.605521,
       51389.617257, 51393.557442, 51401.545359, 51405.657141,
       51408.601852, 51411.592847, 51414.526968, 51421.462396,
       51424.478356, 51431.46713 , 51433.593194, 51435.568542,
       51440.429317, 51443.546042, 51450.408218, 51462.365278,
       51463.537118, 51468.473854, 51471.379803, 51472.524039,
       51478.35787 , 51479.490509, 51484.263657, 51488.448588,
       51491.480567, 51493.515324, 51495.492697, 51505.470833,
       51510.444271, 51513.293056, 51514.451319, 51526.316157,
       51541.344537]), 'aligned_magnitude': array([-6.041, -6.046, -5.971, -5.901, -5.98 , -6.024, -5.97 , -6.059,
       -5.897, -5.925, -5.44 , -5.735, -5.676, -5.775, -5.976, -5.965,
       -6.018, -5.886, -5.903, -5.951, -5.943, -5.993, -6.012, -5.939,
       -6.049, -5.933, -6.173, -6.059, -5.94 , -5.97 , -5.887, -5.458,
       -5.752, -5.942, -5.869, -6.016, -5.959, -6.01 , -5.889, -5.949,
       -6.033, -5.812, -5.953, -6.032, -6.001, -5.893, -5.622, -5.899,
       -6.013, -6.043, -5.925, -5.679, -5.856, -5.712, -5.931, -5.965,
       -5.904, -5.981, -5.886, -5.9  , -5.646, -5.692, -6.039, -5.741,
       -5.987, -5.993, -6.086, -5.986, -6.027, -5.936, -6.02 , -5.961,
       -5.874, -5.486, -6.109, -5.864, -5.995, -6.061, -6.003, -5.915,
       -5.982, -5.6  , -5.567, -5.988, -5.77 , -5.649, -5.751, -5.686,
       -5.871, -5.96 , -6.01 , -5.985, -6.025, -6.04 , -6.033, -5.993,
       -5.988, -6.02 , -6.082, -5.946, -5.719, -5.734, -5.912, -5.882,
       -5.97 , -6.02 , -6.007, -5.959, -5.989, -5.985, -6.023, -5.74 ,
       -5.985, -5.941, -6.   , -5.948, -5.957, -6.006, -5.571, -5.876,
       -6.053, -6.059, -5.943, -5.662, -5.953, -5.819, -5.974, -6.   ,
       -6.063, -6.003, -5.893, -5.976, -5.988, -5.975, -5.99 , -5.946,
       -6.028, -5.95 , -6.01 , -5.814, -6.007, -5.674, -5.776, -5.993,
       -6.014, -5.911, -6.002, -6.06 , -5.966, -5.987, -6.   , -5.968,
       -6.107, -5.753, -5.662, -6.001, -6.025, -5.984, -6.018, -5.914,
       -5.982, -5.776, -5.95 , -5.811, -5.532, -5.826, -5.808, -6.02 ,
       -5.931, -6.011, -6.045, -5.964, -5.905, -5.787, -5.922, -5.954,
       -6.065, -5.991, -5.949, -5.839, -5.965, -5.626, -5.639, -5.866,
       -5.791, -6.048, -5.933, -5.997, -5.892, -5.969, -5.613, -5.533,
       -5.996, -5.978, -5.994, -6.   , -5.939, -6.019, -6.026, -5.944,
       -5.848, -5.926, -6.054, -5.747, -5.986, -5.98 , -6.044, -6.031,
       -6.04 , -5.975, -5.951, -5.808, -5.691, -6.032, -5.955, -5.983,
       -5.978, -5.945, -6.053, -6.009, -6.002, -5.847, -5.98 , -6.022,
       -5.994, -5.774, -5.741, -5.929, -6.028, -5.952, -6.061, -6.058,
       -6.029, -6.003, -6.005, -6.023, -5.993, -5.833, -5.87 , -5.977,
       -6.006, -5.605, -5.805, -6.021, -5.57 , -5.833, -5.962, -6.008,
       -5.997, -5.93 , -5.917, -5.998, -5.978, -6.021, -6.038, -6.236,
       -5.919, -5.795, -6.13 , -5.686, -5.564, -5.965, -5.936, -6.069,
       -5.931, -6.065, -5.989, -5.993, -5.766, -5.957, -5.866, -6.026,
       -5.947, -5.954, -6.086, -6.   , -5.91 , -5.805, -5.657, -5.959,
       -6.007, -6.023, -5.99 , -6.015, -5.979, -6.034, -6.007, -5.78 ,
       -6.065, -5.735, -5.824, -5.594, -5.609, -5.724, -5.56 , -5.941,
       -6.235, -6.002, -5.952, -6.004, -6.005, -6.029, -5.95 , -5.991,
       -5.966, -5.947, -5.736, -5.971, -5.793, -6.351, -5.615, -5.87 ,
       -5.659, -6.012, -5.811, -5.967, -5.992, -5.967, -5.963, -5.981,
       -6.017, -5.94 , -6.005, -5.966, -5.962, -5.786, -5.623, -5.54 ,
       -5.781, -5.805, -5.955, -5.897, -6.008, -6.035, -5.989, -5.93 ,
       -5.952, -5.703, -5.624, -5.687, -5.876, -5.933, -5.856, -6.064,
       -5.997, -6.013, -6.085, -5.877, -5.945, -5.838, -5.713, -5.628,
       -5.93 , -5.941, -6.068, -5.977, -6.059, -5.86 , -5.93 , -5.859,
       -5.978, -5.955, -5.881, -5.596, -5.785, -5.856, -5.926, -5.994,
       -5.982, -6.023, -6.014, -6.037, -5.99 , -5.577, -5.914, -5.642,
       -5.975, -5.947, -5.96 , -5.906, -5.78 , -5.8  , -5.981, -5.972,
       -5.916, -5.977, -6.034, -5.799, -6.011, -5.843, -5.951, -6.095,
       -5.923, -5.995, -6.003, -5.953, -5.759, -5.781, -5.901, -5.97 ,
       -5.993, -5.985, -6.421, -6.142, -6.097, -6.013, -6.02 , -5.905,
       -5.944, -5.762, -5.958, -5.628, -5.965, -6.029, -5.875, -5.625,
       -5.948, -6.002, -5.873, -6.033, -5.645, -5.925, -5.984, -5.934,
       -6.018, -6.067, -5.978, -6.05 , -5.98 , -6.027, -5.867, -5.758,
       -5.605, -5.897, -5.897, -5.923, -5.968, -5.939, -6.01 , -5.984,
       -5.927, -5.932, -5.984, -5.858, -5.686, -6.069, -6.122, -5.966,
       -6.025, -5.858, -5.904, -5.62 , -6.038, -5.507, -5.821, -6.003,
       -5.995, -6.006, -5.963, -5.971, -5.946, -6.048, -5.975, -6.042,
       -6.048, -5.911, -5.607, -5.68 , -5.893, -6.01 , -5.595, -5.927,
       -5.962, -5.985, -5.998, -6.007, -5.984, -6.007, -5.98 , -5.994,
       -5.938, -5.803, -5.943, -5.877, -5.954, -5.972, -5.948, -5.767,
       -5.981, -6.083, -6.089, -5.956, -6.011, -5.991, -5.792, -5.975,
       -5.583, -5.98 , -5.824, -6.052, -5.899, -6.062, -6.152, -6.008,
       -5.901, -5.88 , -5.857, -5.923, -5.645, -5.919, -5.682, -6.012,
       -5.975, -6.058, -5.961, -5.986, -5.69 , -6.014, -5.979, -6.115,
       -6.036, -5.618, -5.826, -6.12 , -5.881, -5.931, -5.947, -5.988,
       -5.793, -5.989, -5.922, -5.938, -6.025, -5.998, -5.983, -5.914,
       -5.658, -5.926, -5.906, -5.976, -5.987, -5.967, -5.97 , -5.965,
       -5.762, -5.891, -5.777, -5.886, -5.888, -5.957, -6.011, -6.03 ,
       -5.979, -5.957, -5.92 , -6.03 , -6.095, -6.005, -5.959, -5.969,
       -5.927, -5.889, -5.693, -5.746, -5.916, -5.969, -5.967, -5.943,
       -6.011, -5.93 , -5.904, -5.838, -5.716, -5.887, -5.978, -5.972,
       -5.972, -5.543, -5.608, -5.809, -5.515, -5.979, -5.969, -5.972,
       -5.662, -5.941, -5.678, -5.649, -6.048, -5.947, -5.509, -5.987,
       -5.989, -6.003, -5.851, -5.968, -5.658, -5.948, -5.935, -5.592,
       -5.831, -5.824, -5.942, -5.929, -5.947, -5.669, -5.686, -5.77 ,
       -6.158, -5.974, -6.074, -6.006, -5.933, -5.951, -5.56 , -5.979,
       -5.998, -5.988, -5.832, -5.921, -5.913, -5.743, -5.952, -5.972,
       -5.817, -6.01 , -5.964, -5.906, -5.961, -5.885, -5.943, -5.967,
       -5.92 , -6.013, -5.566, -5.985, -6.028, -5.843, -5.635, -5.772,
       -6.035, -5.969, -5.683, -5.992, -6.007, -5.945, -5.844, -5.835,
       -5.936, -5.931, -5.862, -5.987, -5.952, -5.995, -5.962, -5.953,
       -5.979, -5.952, -5.583, -5.982, -6.012, -5.955, -5.858, -5.841,
       -5.971, -5.7  , -5.97 , -6.005, -5.98 , -5.925, -6.005, -5.785,
       -5.926, -6.005, -5.87 , -6.06 , -5.54 , -6.004, -5.979, -5.978,
       -5.717, -5.788, -5.962, -5.671, -5.991, -5.984, -6.036, -5.994,
       -5.985]), 'aligned_magnitude2': array([-5.726, -6.09 , -5.751, -5.455, -5.561, -5.593, -5.732, -5.584,
       -5.66 , -5.667, -5.037, -5.423, -5.431, -5.56 , -5.73 , -5.755,
       -5.584, -5.786, -5.591, -5.648, -5.849, -5.638, -5.636, -5.642,
       -5.649, -5.748, -5.733, -5.849, -5.719, -5.385, -5.552, -5.117,
       -5.283, -5.759, -5.544, -5.722, -5.717, -5.643, -5.622, -5.686,
       -5.709, -5.477, -5.562, -5.614, -5.606, -5.689, -5.213, -5.58 ,
       -5.736, -5.698, -5.759, -5.281, -5.271, -5.432, -5.854, -5.682,
       -5.786, -5.659, -5.698, -5.529, -5.393, -5.248, -5.693, -5.521,
       -5.649, -5.621, -5.629, -5.637, -5.64 , -5.849, -5.558, -5.719,
       -5.543, -5.574, -5.597, -5.526, -5.726, -5.665, -5.717, -5.695,
       -5.8  , -5.58 , -5.248, -5.549, -5.372, -5.524, -5.541, -5.333,
       -5.586, -5.464, -5.639, -5.678, -5.692, -5.628, -5.678, -5.606,
       -5.651, -5.676, -5.639, -5.378, -5.265, -5.498, -5.594, -5.62 ,
       -5.715, -5.602, -5.677, -5.688, -5.565, -5.647, -5.6  , -5.532,
       -5.651, -5.583, -5.638, -5.69 , -5.59 , -5.686, -5.164, -5.735,
       -5.68 , -5.648, -5.641, -5.272, -5.56 , -5.649, -5.611, -5.76 ,
       -5.718, -5.6  , -5.604, -5.627, -5.623, -5.656, -5.65 , -5.592,
       -5.671, -5.595, -5.688, -5.731, -5.698, -5.18 , -5.391, -5.847,
       -5.604, -5.665, -5.566, -5.624, -5.649, -5.68 , -5.64 , -5.722,
       -5.701, -5.457, -5.269, -5.648, -5.665, -5.561, -5.581, -5.685,
       -5.605, -5.389, -5.558, -5.484, -5.371, -5.438, -5.5  , -5.483,
       -5.698, -5.694, -5.687, -5.819, -5.54 , -5.515, -5.657, -5.638,
       -5.701, -5.645, -5.653, -6.029, -5.661, -5.207, -5.267, -5.605,
       -5.63 , -5.552, -5.589, -5.548, -5.614, -5.679, -5.12 , -5.169,
       -5.606, -5.633, -5.594, -5.645, -5.584, -5.618, -5.577, -5.516,
       -5.278, -5.637, -5.68 , -5.43 , -5.591, -5.723, -5.591, -5.811,
       -5.855, -5.626, -5.681, -5.534, -5.377, -5.635, -5.711, -5.589,
       -5.559, -5.691, -5.476, -5.581, -5.512, -5.388, -5.692, -5.633,
       -5.654, -5.373, -5.338, -5.535, -5.65 , -5.662, -5.559, -5.583,
       -5.666, -5.634, -5.637, -5.654, -5.634, -5.556, -5.621, -5.635,
       -5.621, -5.151, -5.465, -5.642, -5.141, -5.47 , -5.596, -5.616,
       -5.638, -5.67 , -5.53 , -5.65 , -5.662, -5.69 , -5.673, -5.529,
       -5.631, -5.616, -5.999, -5.552, -5.248, -5.494, -5.75 , -5.745,
       -5.85 , -5.646, -5.655, -5.68 , -5.553, -5.555, -5.626, -5.591,
       -5.7  , -5.631, -5.956, -5.777, -5.585, -5.575, -5.203, -5.549,
       -5.681, -5.683, -5.67 , -5.621, -5.667, -5.788, -5.428, -5.487,
       -5.426, -5.167, -5.562, -5.34 , -5.375, -5.337, -5.244, -5.598,
       -5.994, -5.629, -5.58 , -5.6  , -5.623, -5.652, -5.659, -5.548,
       -5.738, -5.577, -5.481, -5.609, -5.418, -5.629, -5.401, -5.522,
       -5.398, -5.809, -5.332, -5.646, -5.636, -5.61 , -5.651, -5.604,
       -5.618, -5.612, -5.639, -5.723, -5.706, -5.465, -5.291, -5.133,
       -5.496, -5.469, -5.548, -5.556, -5.693, -5.622, -5.653, -5.736,
       -5.667, -5.351, -5.463, -5.328, -5.537, -5.637, -5.507, -5.679,
       -5.724, -5.758, -5.764, -5.477, -5.565, -5.578, -5.649, -5.427,
       -5.58 , -5.713, -5.802, -5.626, -5.651, -5.632, -5.618, -5.707,
       -5.696, -5.593, -5.413, -5.208, -5.552, -5.62 , -5.592, -5.647,
       -5.616, -5.592, -5.645, -5.651, -5.57 , -5.222, -5.485, -5.344,
       -5.634, -5.682, -5.609, -5.354, -5.388, -5.417, -5.647, -5.727,
       -5.621, -5.572, -5.671, -5.656, -5.68 , -5.471, -5.609, -5.616,
       -5.668, -5.664, -5.584, -5.61 , -5.386, -5.435, -5.531, -5.611,
       -5.6  , -5.603, -5.831, -5.71 , -5.641, -5.689, -5.696, -5.74 ,
       -5.659, -5.386, -5.584, -5.212, -5.627, -5.596, -5.671, -5.149,
       -5.798, -5.649, -5.616, -5.779, -5.221, -5.645, -5.608, -5.689,
       -5.675, -5.592, -5.811, -5.601, -5.575, -5.53 , -5.516, -5.32 ,
       -5.346, -5.461, -5.67 , -5.667, -5.599, -5.853, -5.615, -5.597,
       -5.701, -5.66 , -5.629, -5.521, -5.363, -5.534, -5.784, -5.561,
       -5.629, -5.584, -5.583, -5.425, -5.616, -5.435, -5.37 , -5.658,
       -5.612, -5.585, -5.557, -5.544, -5.621, -5.708, -5.616, -5.819,
       -5.605, -5.601, -5.244, -5.307, -5.625, -5.647, -5.196, -5.543,
       -5.632, -5.83 , -5.623, -5.66 , -5.632, -5.629, -5.62 , -5.683,
       -5.625, -5.348, -5.689, -5.615, -5.693, -5.76 , -5.667, -5.415,
       -5.609, -5.7  , -5.642, -5.562, -5.634, -5.652, -5.289, -5.609,
       -5.21 , -5.636, -5.401, -5.731, -5.663, -5.747, -5.725, -5.601,
       -5.69 , -5.721, -5.778, -5.61 , -5.305, -5.692, -5.637, -5.583,
       -5.632, -5.775, -5.634, -5.718, -5.352, -5.664, -5.62 , -5.502,
       -5.813, -5.249, -5.498, -5.55 , -5.621, -5.645, -5.635, -5.582,
       -5.51 , -5.436, -5.535, -5.638, -5.658, -5.586, -5.599, -5.512,
       -5.516, -5.662, -5.628, -5.783, -5.599, -5.651, -5.603, -5.552,
       -5.482, -5.588, -5.223, -5.519, -5.405, -5.602, -5.634, -5.695,
       -5.595, -5.653, -5.586, -5.621, -5.713, -5.711, -5.622, -5.611,
       -5.513, -5.537, -5.338, -5.426, -5.668, -5.613, -5.649, -5.622,
       -5.634, -5.616, -5.573, -5.535, -5.514, -5.611, -5.611, -5.649,
       -5.633, -5.3  , -5.278, -5.528, -5.19 , -5.56 , -5.612, -5.633,
       -5.37 , -5.642, -5.367, -5.38 , -5.705, -5.62 , -5.291, -5.553,
       -5.591, -5.589, -5.548, -5.561, -5.361, -5.533, -5.637, -5.22 ,
       -5.384, -5.489, -5.595, -5.581, -5.63 , -5.547, -5.31 , -5.617,
       -5.516, -5.642, -5.655, -5.627, -5.66 , -5.579, -5.391, -5.596,
       -5.666, -5.652, -5.52 , -5.659, -5.382, -5.459, -5.646, -5.529,
       -5.475, -5.595, -5.674, -5.532, -5.627, -5.677, -5.652, -5.619,
       -5.549, -5.699, -5.162, -5.588, -5.719, -5.59 , -5.338, -5.675,
       -5.588, -5.512, -5.416, -5.605, -5.622, -5.659, -5.381, -5.482,
       -5.572, -5.644, -5.561, -5.636, -5.595, -5.725, -5.638, -5.642,
       -5.634, -5.605, -5.225, -5.538, -5.646, -5.622, -5.537, -5.624,
       -5.661, -5.333, -5.652, -5.586, -5.635, -5.579, -5.534, -5.509,
       -5.597, -5.638, -5.608, -5.614, -5.217, -5.557, -5.64 , -5.608,
       -5.418, -5.594, -5.737, -5.24 , -5.652, -5.593, -5.708, -5.598,
       -5.626]), 'aligned_error': array([0.141, 0.167, 0.06 , 0.055, 0.052, 0.042, 0.045, 0.041, 0.08 ,
       0.07 , 0.083, 0.06 , 0.047, 0.111, 0.052, 0.066, 0.027, 0.061,
       0.069, 0.057, 0.087, 0.047, 0.036, 0.03 , 0.066, 0.062, 0.123,
       0.08 , 0.033, 0.116, 0.123, 0.092, 0.054, 0.07 , 0.085, 0.079,
       0.072, 0.05 , 0.033, 0.028, 0.025, 0.036, 0.037, 0.033, 0.023,
       0.071, 0.049, 0.038, 0.053, 0.025, 0.031, 0.061, 0.066, 0.024,
       0.085, 0.064, 0.081, 0.038, 0.025, 0.025, 0.05 , 0.057, 0.06 ,
       0.043, 0.026, 0.039, 0.026, 0.044, 0.023, 0.078, 0.035, 0.031,
       0.035, 0.141, 0.057, 0.034, 0.033, 0.037, 0.034, 0.038, 0.065,
       0.1  , 0.036, 0.02 , 0.073, 0.093, 0.065, 0.059, 0.056, 0.079,
       0.031, 0.026, 0.023, 0.015, 0.025, 0.031, 0.037, 0.037, 0.031,
       0.096, 0.044, 0.06 , 0.022, 0.036, 0.036, 0.021, 0.022, 0.042,
       0.024, 0.017, 0.046, 0.071, 0.031, 0.034, 0.017, 0.046, 0.029,
       0.087, 0.057, 0.048, 0.053, 0.048, 0.022, 0.041, 0.029, 0.049,
       0.024, 0.051, 0.054, 0.038, 0.022, 0.022, 0.024, 0.031, 0.037,
       0.033, 0.034, 0.039, 0.041, 0.13 , 0.033, 0.097, 0.102, 0.172,
       0.098, 0.08 , 0.044, 0.063, 0.073, 0.047, 0.038, 0.059, 0.066,
       0.143, 0.067, 0.04 , 0.048, 0.081, 0.021, 0.055, 0.135, 0.067,
       0.058, 0.046, 0.135, 0.068, 0.071, 0.051, 0.058, 0.037, 0.052,
       0.069, 0.06 , 0.092, 0.054, 0.081, 0.075, 0.054, 0.041, 0.17 ,
       0.144, 0.033, 0.051, 0.12 , 0.148, 0.061, 0.031, 0.048, 0.071,
       0.041, 0.192, 0.16 , 0.029, 0.045, 0.025, 0.046, 0.03 , 0.025,
       0.076, 0.033, 0.051, 0.053, 0.06 , 0.063, 0.03 , 0.046, 0.035,
       0.07 , 0.066, 0.025, 0.04 , 0.033, 0.032, 0.038, 0.055, 0.026,
       0.031, 0.102, 0.046, 0.044, 0.049, 0.082, 0.054, 0.022, 0.03 ,
       0.025, 0.026, 0.042, 0.025, 0.048, 0.068, 0.028, 0.019, 0.059,
       0.022, 0.039, 0.03 , 0.094, 0.042, 0.039, 0.035, 0.02 , 0.044,
       0.041, 0.026, 0.032, 0.022, 0.019, 0.032, 0.071, 0.027, 0.034,
       0.032, 0.152, 0.068, 0.146, 0.043, 0.158, 0.052, 0.122, 0.106,
       0.032, 0.085, 0.08 , 0.151, 0.11 , 0.054, 0.04 , 0.09 , 0.054,
       0.044, 0.033, 0.072, 0.023, 0.119, 0.063, 0.056, 0.066, 0.032,
       0.05 , 0.065, 0.034, 0.048, 0.02 , 0.021, 0.104, 0.083, 0.049,
       0.131, 0.114, 0.073, 0.065, 0.091, 0.15 , 0.138, 0.032, 0.167,
       0.052, 0.033, 0.071, 0.026, 0.025, 0.028, 0.044, 0.069, 0.026,
       0.035, 0.055, 0.088, 0.121, 0.116, 0.047, 0.063, 0.027, 0.017,
       0.055, 0.043, 0.035, 0.022, 0.026, 0.014, 0.032, 0.029, 0.089,
       0.133, 0.098, 0.06 , 0.047, 0.033, 0.029, 0.033, 0.058, 0.041,
       0.02 , 0.022, 0.045, 0.053, 0.065, 0.048, 0.025, 0.026, 0.024,
       0.128, 0.062, 0.05 , 0.077, 0.143, 0.104, 0.048, 0.053, 0.112,
       0.078, 0.023, 0.057, 0.089, 0.052, 0.06 , 0.029, 0.044, 0.036,
       0.058, 0.021, 0.033, 0.041, 0.048, 0.065, 0.022, 0.033, 0.02 ,
       0.022, 0.022, 0.039, 0.07 , 0.047, 0.034, 0.116, 0.039, 0.058,
       0.03 , 0.031, 0.03 , 0.037, 0.031, 0.044, 0.079, 0.04 , 0.046,
       0.085, 0.055, 0.021, 0.03 , 0.092, 0.034, 0.028, 0.013, 0.013,
       0.014, 0.017, 0.043, 0.024, 0.013, 0.026, 0.076, 0.07 , 0.04 ,
       0.043, 0.056, 0.052, 0.055, 0.033, 0.03 , 0.074, 0.021, 0.03 ,
       0.05 , 0.125, 0.062, 0.049, 0.128, 0.056, 0.072, 0.055, 0.027,
       0.053, 0.043, 0.078, 0.103, 0.047, 0.041, 0.047, 0.023, 0.035,
       0.055, 0.109, 0.057, 0.064, 0.039, 0.076, 0.022, 0.036, 0.068,
       0.069, 0.026, 0.113, 0.048, 0.06 , 0.124, 0.032, 0.053, 0.071,
       0.067, 0.042, 0.031, 0.1  , 0.027, 0.06 , 0.041, 0.029, 0.019,
       0.035, 0.035, 0.038, 0.036, 0.158, 0.032, 0.07 , 0.03 , 0.029,
       0.045, 0.033, 0.044, 0.041, 0.051, 0.094, 0.092, 0.027, 0.017,
       0.023, 0.031, 0.046, 0.051, 0.033, 0.039, 0.089, 0.037, 0.037,
       0.036, 0.019, 0.015, 0.039, 0.026, 0.013, 0.018, 0.026, 0.16 ,
       0.021, 0.031, 0.033, 0.102, 0.044, 0.037, 0.028, 0.098, 0.041,
       0.079, 0.072, 0.12 , 0.051, 0.074, 0.048, 0.053, 0.034, 0.047,
       0.048, 0.032, 0.061, 0.027, 0.023, 0.048, 0.088, 0.078, 0.059,
       0.059, 0.111, 0.029, 0.04 , 0.046, 0.034, 0.079, 0.123, 0.027,
       0.044, 0.105, 0.043, 0.021, 0.024, 0.068, 0.039, 0.025, 0.072,
       0.012, 0.022, 0.019, 0.026, 0.065, 0.037, 0.022, 0.024, 0.081,
       0.047, 0.036, 0.035, 0.024, 0.023, 0.022, 0.023, 0.04 , 0.043,
       0.035, 0.023, 0.019, 0.024, 0.045, 0.051, 0.041, 0.027, 0.043,
       0.046, 0.045, 0.029, 0.024, 0.024, 0.042, 0.024, 0.015, 0.027,
       0.047, 0.052, 0.046, 0.056, 0.023, 0.027, 0.059, 0.046, 0.052,
       0.046, 0.061, 0.031, 0.058, 0.024, 0.116, 0.057, 0.023, 0.06 ,
       0.141, 0.022, 0.02 , 0.022, 0.027, 0.025, 0.036, 0.022, 0.039,
       0.042, 0.017, 0.083, 0.065, 0.068, 0.133, 0.089, 0.07 , 0.035,
       0.032, 0.025, 0.063, 0.024, 0.029, 0.022, 0.063, 0.03 , 0.027,
       0.071, 0.021, 0.047, 0.03 , 0.064, 0.043, 0.054, 0.039, 0.031,
       0.033, 0.043, 0.068, 0.049, 0.046, 0.021, 0.066, 0.093, 0.1  ,
       0.187, 0.112, 0.048, 0.068, 0.019, 0.086, 0.063, 0.055, 0.04 ,
       0.034, 0.028, 0.023, 0.027, 0.027, 0.04 , 0.046, 0.026, 0.083,
       0.045, 0.044, 0.035, 0.036, 0.057, 0.029, 0.033, 0.036, 0.086,
       0.032, 0.024, 0.035, 0.04 , 0.059, 0.116, 0.037, 0.026, 0.029,
       0.041, 0.051, 0.025, 0.036, 0.018, 0.049, 0.024, 0.037, 0.046,
       0.019, 0.02 , 0.03 , 0.02 , 0.024]), 'aligned_error2': array([0.181, 0.143, 0.073, 0.084, 0.076, 0.065, 0.061, 0.068, 0.106,
       0.094, 0.132, 0.099, 0.06 , 0.166, 0.084, 0.088, 0.046, 0.076,
       0.094, 0.079, 0.096, 0.064, 0.051, 0.041, 0.111, 0.085, 0.196,
       0.1  , 0.044, 0.195, 0.154, 0.129, 0.09 , 0.077, 0.104, 0.097,
       0.091, 0.068, 0.047, 0.042, 0.041, 0.053, 0.06 , 0.054, 0.035,
       0.087, 0.064, 0.056, 0.067, 0.04 , 0.038, 0.082, 0.124, 0.033,
       0.105, 0.076, 0.09 , 0.053, 0.033, 0.039, 0.078, 0.086, 0.075,
       0.056, 0.033, 0.056, 0.038, 0.057, 0.03 , 0.084, 0.054, 0.032,
       0.048, 0.129, 0.088, 0.055, 0.045, 0.053, 0.047, 0.047, 0.085,
       0.094, 0.048, 0.034, 0.106, 0.11 , 0.076, 0.084, 0.066, 0.139,
       0.045, 0.033, 0.036, 0.026, 0.04 , 0.043, 0.051, 0.051, 0.046,
       0.18 , 0.052, 0.053, 0.03 , 0.035, 0.045, 0.036, 0.029, 0.045,
       0.038, 0.026, 0.072, 0.097, 0.043, 0.047, 0.035, 0.057, 0.045,
       0.081, 0.082, 0.051, 0.076, 0.063, 0.023, 0.053, 0.032, 0.053,
       0.031, 0.057, 0.071, 0.047, 0.027, 0.028, 0.031, 0.04 , 0.045,
       0.046, 0.051, 0.056, 0.055, 0.11 , 0.065, 0.156, 0.141, 0.176,
       0.139, 0.099, 0.066, 0.096, 0.104, 0.061, 0.052, 0.074, 0.098,
       0.253, 0.105, 0.055, 0.071, 0.122, 0.034, 0.073, 0.19 , 0.107,
       0.093, 0.063, 0.16 , 0.104, 0.093, 0.09 , 0.074, 0.057, 0.073,
       0.081, 0.082, 0.093, 0.065, 0.104, 0.105, 0.072, 0.054, 0.143,
       0.178, 0.049, 0.063, 0.152, 0.176, 0.09 , 0.036, 0.06 , 0.085,
       0.05 , 0.239, 0.197, 0.045, 0.061, 0.038, 0.065, 0.048, 0.031,
       0.106, 0.038, 0.086, 0.061, 0.08 , 0.096, 0.054, 0.073, 0.057,
       0.079, 0.074, 0.035, 0.051, 0.036, 0.041, 0.056, 0.067, 0.041,
       0.049, 0.112, 0.068, 0.052, 0.07 , 0.118, 0.068, 0.033, 0.041,
       0.037, 0.036, 0.064, 0.033, 0.058, 0.09 , 0.042, 0.025, 0.083,
       0.031, 0.052, 0.041, 0.093, 0.049, 0.046, 0.042, 0.037, 0.052,
       0.063, 0.044, 0.042, 0.027, 0.026, 0.039, 0.082, 0.034, 0.042,
       0.049, 0.223, 0.095, 0.274, 0.058, 0.171, 0.07 , 0.144, 0.16 ,
       0.053, 0.104, 0.117, 0.166, 0.159, 0.085, 0.059, 0.11 , 0.08 ,
       0.047, 0.042, 0.094, 0.035, 0.132, 0.082, 0.096, 0.091, 0.057,
       0.072, 0.086, 0.048, 0.066, 0.03 , 0.035, 0.117, 0.135, 0.077,
       0.204, 0.178, 0.074, 0.075, 0.1  , 0.177, 0.182, 0.043, 0.202,
       0.072, 0.05 , 0.1  , 0.035, 0.037, 0.038, 0.068, 0.084, 0.035,
       0.045, 0.077, 0.139, 0.159, 0.143, 0.063, 0.081, 0.034, 0.032,
       0.072, 0.057, 0.048, 0.027, 0.035, 0.021, 0.043, 0.037, 0.081,
       0.128, 0.086, 0.069, 0.058, 0.036, 0.041, 0.05 , 0.083, 0.052,
       0.031, 0.029, 0.056, 0.068, 0.083, 0.051, 0.036, 0.033, 0.03 ,
       0.177, 0.091, 0.06 , 0.087, 0.159, 0.126, 0.06 , 0.062, 0.106,
       0.093, 0.032, 0.067, 0.11 , 0.065, 0.078, 0.038, 0.058, 0.037,
       0.074, 0.029, 0.048, 0.057, 0.056, 0.079, 0.029, 0.048, 0.029,
       0.033, 0.026, 0.052, 0.091, 0.063, 0.048, 0.143, 0.056, 0.079,
       0.041, 0.066, 0.043, 0.05 , 0.041, 0.052, 0.098, 0.062, 0.064,
       0.094, 0.094, 0.033, 0.046, 0.155, 0.048, 0.037, 0.022, 0.019,
       0.022, 0.025, 0.061, 0.031, 0.019, 0.038, 0.133, 0.112, 0.062,
       0.059, 0.077, 0.062, 0.081, 0.04 , 0.042, 0.098, 0.03 , 0.043,
       0.062, 0.163, 0.065, 0.069, 0.146, 0.071, 0.112, 0.07 , 0.041,
       0.067, 0.057, 0.113, 0.092, 0.054, 0.047, 0.058, 0.026, 0.047,
       0.06 , 0.156, 0.076, 0.08 , 0.058, 0.085, 0.031, 0.05 , 0.082,
       0.081, 0.033, 0.149, 0.069, 0.096, 0.147, 0.04 , 0.061, 0.064,
       0.075, 0.044, 0.05 , 0.112, 0.043, 0.086, 0.065, 0.043, 0.03 ,
       0.046, 0.039, 0.049, 0.043, 0.144, 0.044, 0.098, 0.031, 0.044,
       0.06 , 0.05 , 0.068, 0.061, 0.07 , 0.103, 0.151, 0.041, 0.021,
       0.031, 0.042, 0.063, 0.071, 0.054, 0.05 , 0.121, 0.051, 0.042,
       0.046, 0.031, 0.023, 0.063, 0.046, 0.019, 0.026, 0.032, 0.277,
       0.025, 0.052, 0.047, 0.146, 0.073, 0.047, 0.039, 0.151, 0.062,
       0.08 , 0.073, 0.125, 0.065, 0.109, 0.063, 0.062, 0.052, 0.067,
       0.072, 0.043, 0.085, 0.04 , 0.032, 0.084, 0.14 , 0.096, 0.098,
       0.074, 0.176, 0.039, 0.056, 0.058, 0.051, 0.094, 0.182, 0.04 ,
       0.053, 0.109, 0.052, 0.028, 0.028, 0.08 , 0.054, 0.031, 0.098,
       0.021, 0.031, 0.026, 0.041, 0.09 , 0.048, 0.033, 0.035, 0.123,
       0.087, 0.061, 0.055, 0.04 , 0.03 , 0.03 , 0.042, 0.063, 0.059,
       0.054, 0.031, 0.029, 0.037, 0.061, 0.067, 0.051, 0.043, 0.064,
       0.065, 0.071, 0.041, 0.031, 0.038, 0.049, 0.033, 0.025, 0.036,
       0.077, 0.064, 0.066, 0.066, 0.033, 0.04 , 0.088, 0.066, 0.062,
       0.058, 0.082, 0.035, 0.08 , 0.035, 0.127, 0.061, 0.036, 0.079,
       0.221, 0.028, 0.029, 0.035, 0.038, 0.038, 0.054, 0.03 , 0.048,
       0.056, 0.021, 0.087, 0.088, 0.063, 0.199, 0.101, 0.109, 0.045,
       0.042, 0.039, 0.073, 0.037, 0.04 , 0.032, 0.1  , 0.037, 0.057,
       0.098, 0.029, 0.076, 0.05 , 0.082, 0.053, 0.075, 0.049, 0.038,
       0.046, 0.054, 0.073, 0.07 , 0.071, 0.029, 0.08 , 0.113, 0.11 ,
       0.21 , 0.167, 0.076, 0.095, 0.027, 0.121, 0.08 , 0.074, 0.054,
       0.049, 0.036, 0.027, 0.035, 0.032, 0.05 , 0.055, 0.035, 0.099,
       0.063, 0.061, 0.052, 0.052, 0.083, 0.037, 0.04 , 0.044, 0.127,
       0.04 , 0.034, 0.05 , 0.048, 0.099, 0.147, 0.049, 0.038, 0.033,
       0.051, 0.075, 0.037, 0.052, 0.024, 0.065, 0.03 , 0.045, 0.063,
       0.024, 0.027, 0.04 , 0.026, 0.03 ])}

5. Feature extractors

The library provides a robust collection of built-in feature extractors for time-series analysis, all available in the feets.extractors sub-package. These extractors are designed to compute a wide variety of features commonly used in astronomical light-curve characterization.

In feets, each feature extractor is implemented as an Extractor subclass, which specifies the features it calculates and defines an extract method containing the extraction logic.

Below is a simple example of a custom extractor that computes both the maximum magnitude and the minimum time from the input data:

[9]:
import feets

class MaxMagMinTime(feets.Extractor):
    features = ["magmax", "mintime"]

    def extract(self, magnitude, time):
        return {"magmax": magnitude.max(), "mintime": time.min()}

For a detailed guide on creating and registering your own extractors, including the handling of dependencies, please see the Extractor Tutorial.

Available features

The following table lists all available features, along with their data requirements and dependencies:

Note:
Some features depend on others. feets automatically resolves these dependencies for you. For example, if you request a feature that requires PeriodLS, it will be computed even if you did not explicitly select it.
[10]:
features_table()
[10]:
Feature Computed with Dependencies Input Data
Amplitude magnitude, error, time
AndersonDarling magnitude, error, time
Autocor_length magnitude
BazinFit_Amplitude BazinFit_ReferenceTime, BazinFit_Baseline, BazinFit_RiseTime, BazinFit_FallTime, BazinFit_ReducedChi2 flux, flux_error, time
BazinFit_Baseline BazinFit_ReferenceTime, BazinFit_RiseTime, BazinFit_FallTime, BazinFit_ReducedChi2, BazinFit_Amplitude flux, flux_error, time
BazinFit_FallTime BazinFit_ReferenceTime, BazinFit_Baseline, BazinFit_RiseTime, BazinFit_ReducedChi2, BazinFit_Amplitude flux, flux_error, time
BazinFit_ReducedChi2 BazinFit_ReferenceTime, BazinFit_Baseline, BazinFit_RiseTime, BazinFit_FallTime, BazinFit_Amplitude flux, flux_error, time
BazinFit_ReferenceTime BazinFit_Baseline, BazinFit_RiseTime, BazinFit_FallTime, BazinFit_ReducedChi2, BazinFit_Amplitude flux, flux_error, time
BazinFit_RiseTime BazinFit_ReferenceTime, BazinFit_Baseline, BazinFit_FallTime, BazinFit_ReducedChi2, BazinFit_Amplitude flux, flux_error, time
BeyondNStd magnitude, error, time
CAR_mean CAR_tau, CAR_sigma magnitude, error, time
CAR_sigma CAR_tau, CAR_mean magnitude, error, time
CAR_tau CAR_mean, CAR_sigma magnitude, error, time
Color magnitude, magnitude2
Con magnitude
Cusum magnitude, error, time
DeltamDeltat magnitude, time
Duration magnitude, error, time
Eta magnitude, error, time
EtaE magnitude, error, time
Eta_color aligned_magnitude, aligned_time, aligned_magnitude2
ExcessVariance magnitude, error, time
Freq{i}_harmonics_amplitude_{j} Freq{i}_harmonics_amplitude_{j} and Freq{i}_harmonics_rel_phase_{j} magnitude, time
Gskew magnitude
InterPercentileRange magnitude, error, time
LinearFit_ReducedChi2 LinearFit_Slope, LinearFit_Sigma magnitude, error, time
LinearFit_Sigma LinearFit_ReducedChi2, LinearFit_Slope magnitude, error, time
LinearFit_Slope LinearFit_ReducedChi2, LinearFit_Sigma magnitude, error, time
LinearTrend LinearTrend_Sigma, LinearTrend_ReducedChi2 magnitude, error, time
LinearTrend_ReducedChi2 LinearTrend_Sigma, LinearTrend magnitude, error, time
LinearTrend_Sigma LinearTrend_ReducedChi2, LinearTrend magnitude, error, time
LinexpFit_Amplitude LinexpFit_ReferenceTime, LinexpFit_ReducedChi2, LinexpFit_FallTime, LinexpFit_Baseline flux, flux_error, time
LinexpFit_Baseline LinexpFit_ReferenceTime, LinexpFit_ReducedChi2, LinexpFit_FallTime, LinexpFit_Amplitude flux, flux_error, time
LinexpFit_FallTime LinexpFit_ReferenceTime, LinexpFit_ReducedChi2, LinexpFit_Amplitude, LinexpFit_Baseline flux, flux_error, time
LinexpFit_ReducedChi2 LinexpFit_ReferenceTime, LinexpFit_FallTime, LinexpFit_Amplitude, LinexpFit_Baseline flux, flux_error, time
LinexpFit_ReferenceTime LinexpFit_ReducedChi2, LinexpFit_FallTime, LinexpFit_Amplitude, LinexpFit_Baseline flux, flux_error, time
MaxSlope magnitude, error, time
MaxTimeInterval magnitude, error, time
Mean magnitude, error, time
MeanVariance magnitude, error, time
MedianAbsDev magnitude, error, time
MedianAmplitude magnitude
MedianBRP magnitude, error, time
MinTimeInterval magnitude, error, time
OtsuLowerToAllRatio OtsuMeanDiff, OtsuStdLower, OtsuStdUpper magnitude, error, time
OtsuMeanDiff OtsuLowerToAllRatio, OtsuStdLower, OtsuStdUpper magnitude, error, time
OtsuStdLower OtsuLowerToAllRatio, OtsuMeanDiff, OtsuStdUpper magnitude, error, time
OtsuStdUpper OtsuLowerToAllRatio, OtsuMeanDiff, OtsuStdLower magnitude, error, time
PairSlopeTrend magnitude
PercentAmplitude magnitude, error, time
PercentDiffPercentile magnitude, error, time
PercentageRatio magnitude, error, time
PeriodLS Psi_CS, Period_fit, Psi_eta magnitude, time
Period_fit Psi_CS, PeriodLS, Psi_eta magnitude, time
Periodogram_Peaks Periodogram_S_to_N magnitude, error, time
Periodogram_S_to_N Periodogram_Peaks magnitude, error, time
Psi_CS Period_fit, PeriodLS, Psi_eta magnitude, time
Psi_eta Psi_CS, Period_fit, PeriodLS magnitude, time
Q31 magnitude
Q31_color aligned_magnitude, aligned_magnitude2
Rcs magnitude
ReducedChi2 magnitude, error, time
Roms magnitude, error, time
Signature MedianAmplitude, PeriodLS magnitude, time
Skew magnitude, error, time
SlottedALength magnitude, time
SmallKurtosis magnitude, error, time
Std magnitude, error, time
StetsonJ aligned_magnitude, aligned_error, aligned_error2, aligned_magnitude2
StetsonK magnitude, error, time
StetsonK_AC magnitude, time
StetsonL aligned_magnitude, aligned_error, aligned_error2, aligned_magnitude2
StructureFunction_index_21 StructureFunction_index_32, StructureFunction_index_31 magnitude, time
StructureFunction_index_31 StructureFunction_index_32, StructureFunction_index_21 magnitude, time
StructureFunction_index_32 StructureFunction_index_31, StructureFunction_index_21 magnitude, time
TimeMean magnitude, error, time
TimeStd magnitude, error, time
VillarFit_Amplitude VillarFit_ReferenceTime, VillarFit_Baseline, VillarFit_ReducedChi2, VillarFit_PlateauDuration, VillarFit_RiseTime, VillarFit_FallTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
VillarFit_Baseline VillarFit_ReferenceTime, VillarFit_Amplitude, VillarFit_ReducedChi2, VillarFit_PlateauDuration, VillarFit_RiseTime, VillarFit_FallTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
VillarFit_FallTime VillarFit_ReferenceTime, VillarFit_Amplitude, VillarFit_Baseline, VillarFit_ReducedChi2, VillarFit_PlateauDuration, VillarFit_RiseTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
VillarFit_PlateauDuration VillarFit_ReferenceTime, VillarFit_Amplitude, VillarFit_Baseline, VillarFit_ReducedChi2, VillarFit_RiseTime, VillarFit_FallTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
VillarFit_PlateauRelAmplitude VillarFit_ReferenceTime, VillarFit_Amplitude, VillarFit_Baseline, VillarFit_ReducedChi2, VillarFit_PlateauDuration, VillarFit_RiseTime, VillarFit_FallTime flux, flux_error, time
VillarFit_ReducedChi2 VillarFit_ReferenceTime, VillarFit_Amplitude, VillarFit_Baseline, VillarFit_PlateauDuration, VillarFit_RiseTime, VillarFit_FallTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
VillarFit_ReferenceTime VillarFit_Amplitude, VillarFit_Baseline, VillarFit_ReducedChi2, VillarFit_PlateauDuration, VillarFit_RiseTime, VillarFit_FallTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
VillarFit_RiseTime VillarFit_ReferenceTime, VillarFit_Amplitude, VillarFit_Baseline, VillarFit_ReducedChi2, VillarFit_PlateauDuration, VillarFit_FallTime, VillarFit_PlateauRelAmplitude flux, flux_error, time
WeightedBeyondNStd magnitude, error
WeightedMean magnitude, error, time

6. Extracting features: The FeatureSpace object

The feets.FeatureSpace class is the primary tool for configuring and running the feature extraction process. You can select features based on their names or the data they require, and then you can use the extract() method to compute the selected features from a given light-curve.

Selecting features

By default, a FeatureSpace with no parameters will try to compute all of the features available. You can also use a collection of incremental filters to configure the features selected for extraction based on their names or by the data they require.

By available data (data)

The data parameter allows you to select all the features that can be calculated from a specific set of known data vectors:

[11]:
import feets

fs = feets.FeatureSpace(data={"magnitude", "time"})
print(f"Selected features: {list(fs.selected_features)}")

features = fs.extract(**lc)
features.as_frame()
Selected features: ['BeyondNStd', 'InterPercentileRange', 'PeriodLS', 'Cusum', 'OtsuMeanDiff', 'SmallKurtosis', 'Freq2_harmonics_amplitude_2', 'StructureFunction_index_32', 'AndersonDarling', 'Psi_eta', 'MedianBRP', 'Freq2_harmonics_rel_phase_1', 'Freq2_harmonics_amplitude_1', 'DeltamDeltat', 'TimeMean', 'Periodogram_Peaks', 'Freq3_harmonics_amplitude_1', 'Gskew', 'Freq2_harmonics_amplitude_3', 'MedianAbsDev', 'Freq1_harmonics_amplitude_1', 'Freq2_harmonics_rel_phase_2', 'OtsuLowerToAllRatio', 'Freq3_harmonics_amplitude_2', 'Period_fit', 'Freq1_harmonics_amplitude_3', 'MaxTimeInterval', 'Autocor_length', 'MaxSlope', 'StetsonK_AC', 'LinearTrend', 'Freq1_harmonics_amplitude_2', 'Freq2_harmonics_amplitude_0', 'Con', 'Freq3_harmonics_amplitude_0', 'Freq3_harmonics_amplitude_3', 'Freq2_harmonics_rel_phase_3', 'Periodogram_S_to_N', 'Freq1_harmonics_rel_phase_3', 'PercentageRatio', 'MedianAmplitude', 'Skew', 'Signature', 'MinTimeInterval', 'Freq1_harmonics_rel_phase_2', 'StructureFunction_index_31', 'Freq1_harmonics_amplitude_0', 'Freq3_harmonics_rel_phase_0', 'Eta', 'Q31', 'Freq3_harmonics_rel_phase_1', 'SlottedALength', 'PercentDiffPercentile', 'Freq3_harmonics_rel_phase_3', 'OtsuStdUpper', 'TimeStd', 'StructureFunction_index_21', 'PairSlopeTrend', 'Freq3_harmonics_rel_phase_2', 'Psi_CS', 'Std', 'Rcs', 'Freq1_harmonics_rel_phase_0', 'Mean', 'LinearTrend_ReducedChi2', 'MeanVariance', 'EtaE', 'Freq1_harmonics_rel_phase_1', 'Duration', 'Amplitude', 'LinearTrend_Sigma', 'OtsuStdLower', 'Freq2_harmonics_rel_phase_0', 'PercentAmplitude']
[11]:
Features Beyond1Std InterPercentileRange_25 PeriodLS_0 PeriodLS_1 PeriodLS_2 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 StructureFunction_index_32 ... LinearTrend_ReducedChi2 MeanVariance EtaE Freq1_harmonics_rel_phase_1 Duration Amplitude LinearTrend_Sigma OtsuStdLower Freq2_harmonics_rel_phase_0 PercentAmplitude
Light Curve
0 0.232831 0.141 0.936878 0.937007 0.936942 0.039155 0.286926 1.372133 0.03705 1.699065 ... 0.141628 -0.023933 906.395326 -0.323577 2722.847778 0.6425 0.000006 0.068549 0.0 0.6745

1 rows × 1284 columns

By feature name (only)

The only parameter allows you to specify an explicit list of features to compute. This filter restricts the selection to only the features you have requested, ignoring others that might be computable from the available data:

[12]:
import feets

fs = feets.FeatureSpace(
    data={"time", "magnitude"},
    only={"Mean", "Std", "StetsonK"},
)
print(f"Selected features: {list(fs.selected_features)}")

features = fs.extract(**lc)
features.as_frame()
Selected features: ['Mean', 'Std']
[12]:
Features Mean Std
Light Curve
0 -5.917989 0.141632

As you can see from the previous example, only the Mean and Std features were computed. The StetsonK feature was not included in the final selection because the available data (time and magnitude) didn’t include the required error data vector.

By excluding features (exclude)

You can also use the exclude parameter to prevent specific features from being calculated. This is useful when you want to compute most of the features available for a given set of data vectors but need to skip a few, perhaps because they are computationally expensive or not relevant to your analysis:

[13]:
import feets

fs = feets.FeatureSpace(
    data={"magnitude", "time"},
    exclude={"PeriodLS", "Signature"},
)
print(f"Selected features: {list(fs.selected_features)}")

features = fs.extract(**lc)
features.as_frame()
Selected features: ['BeyondNStd', 'InterPercentileRange', 'Cusum', 'OtsuMeanDiff', 'SmallKurtosis', 'Freq2_harmonics_amplitude_2', 'StructureFunction_index_32', 'AndersonDarling', 'MedianBRP', 'Freq2_harmonics_rel_phase_1', 'Freq2_harmonics_amplitude_1', 'DeltamDeltat', 'TimeMean', 'Periodogram_Peaks', 'Freq3_harmonics_amplitude_1', 'Gskew', 'Freq2_harmonics_amplitude_3', 'MedianAbsDev', 'Freq1_harmonics_amplitude_1', 'Freq2_harmonics_rel_phase_2', 'OtsuLowerToAllRatio', 'Freq3_harmonics_amplitude_2', 'Freq1_harmonics_amplitude_3', 'MaxTimeInterval', 'Autocor_length', 'MaxSlope', 'StetsonK_AC', 'LinearTrend', 'Freq1_harmonics_amplitude_2', 'Freq2_harmonics_amplitude_0', 'Con', 'Freq3_harmonics_amplitude_0', 'Freq3_harmonics_amplitude_3', 'Freq2_harmonics_rel_phase_3', 'Periodogram_S_to_N', 'Freq1_harmonics_rel_phase_3', 'PercentageRatio', 'MedianAmplitude', 'Skew', 'MinTimeInterval', 'Freq1_harmonics_rel_phase_2', 'StructureFunction_index_31', 'Freq1_harmonics_amplitude_0', 'Freq3_harmonics_rel_phase_0', 'Eta', 'Q31', 'Freq3_harmonics_rel_phase_1', 'SlottedALength', 'PercentDiffPercentile', 'Freq3_harmonics_rel_phase_3', 'OtsuStdUpper', 'TimeStd', 'StructureFunction_index_21', 'PairSlopeTrend', 'Freq3_harmonics_rel_phase_2', 'Std', 'Rcs', 'Freq1_harmonics_rel_phase_0', 'Mean', 'LinearTrend_ReducedChi2', 'MeanVariance', 'EtaE', 'Freq1_harmonics_rel_phase_1', 'Duration', 'Amplitude', 'LinearTrend_Sigma', 'OtsuStdLower', 'Freq2_harmonics_rel_phase_0', 'PercentAmplitude']
[13]:
Features Beyond1Std InterPercentileRange_25 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 StructureFunction_index_32 AndersonDarling MedianBRP_10 Freq2_harmonics_rel_phase_1 ... LinearTrend_ReducedChi2 MeanVariance EtaE Freq1_harmonics_rel_phase_1 Duration Amplitude LinearTrend_Sigma OtsuStdLower Freq2_harmonics_rel_phase_0 PercentAmplitude
Light Curve
0 0.232831 0.141 0.039155 0.286926 1.372133 0.03705 1.699065 52.37826 0.556114 0.635527 ... 0.141628 -0.023933 906.395326 -0.323577 2722.847778 0.6425 0.000006 0.068549 0.0 0.6745

1 rows × 624 columns

By data available in light-curve

If you have a light-curve lined up and want to extract all possible features based on its available data, you can use the from_lightcurve() class method. This method automatically inspects the light curve, determines which data vectors are present (e.g., time, magnitude, error), and configures a new FeatureSpace to compute all compatible features:

[14]:
import feets

fs = feets.FeatureSpace.from_lightcurve(**lc)
print(f"Selected features: {list(fs.selected_features)}")

features = fs.extract(**lc)
features.as_frame()
Selected features: ['BeyondNStd', 'InterPercentileRange', 'PeriodLS', 'Cusum', 'OtsuMeanDiff', 'SmallKurtosis', 'Freq2_harmonics_amplitude_2', 'LinearFit_Slope', 'StructureFunction_index_32', 'ExcessVariance', 'AndersonDarling', 'Psi_eta', 'MedianBRP', 'Freq2_harmonics_rel_phase_1', 'Freq2_harmonics_amplitude_1', 'DeltamDeltat', 'TimeMean', 'Periodogram_Peaks', 'Freq3_harmonics_amplitude_1', 'Gskew', 'Q31_color', 'Freq2_harmonics_amplitude_3', 'MedianAbsDev', 'StetsonJ', 'Freq1_harmonics_amplitude_1', 'OtsuLowerToAllRatio', 'Freq2_harmonics_rel_phase_2', 'Period_fit', 'Freq3_harmonics_amplitude_2', 'Freq1_harmonics_amplitude_3', 'MaxTimeInterval', 'Autocor_length', 'MaxSlope', 'StetsonK_AC', 'LinearTrend', 'Freq1_harmonics_amplitude_2', 'Freq2_harmonics_amplitude_0', 'Con', 'Freq3_harmonics_amplitude_0', 'Freq3_harmonics_amplitude_3', 'Freq2_harmonics_rel_phase_3', 'Periodogram_S_to_N', 'Freq1_harmonics_rel_phase_3', 'PercentageRatio', 'MedianAmplitude', 'Skew', 'Signature', 'MinTimeInterval', 'Freq1_harmonics_rel_phase_2', 'CAR_tau', 'StructureFunction_index_31', 'Freq1_harmonics_amplitude_0', 'Freq3_harmonics_rel_phase_0', 'Eta', 'Q31', 'Freq3_harmonics_rel_phase_1', 'SlottedALength', 'PercentDiffPercentile', 'Freq3_harmonics_rel_phase_3', 'OtsuStdUpper', 'Color', 'Roms', 'TimeStd', 'StructureFunction_index_21', 'WeightedBeyondNStd', 'PairSlopeTrend', 'LinearFit_ReducedChi2', 'LinearFit_Sigma', 'Freq3_harmonics_rel_phase_2', 'Psi_CS', 'StetsonL', 'CAR_sigma', 'Std', 'Rcs', 'Freq1_harmonics_rel_phase_0', 'ReducedChi2', 'Mean', 'LinearTrend_ReducedChi2', 'MeanVariance', 'EtaE', 'Eta_color', 'Freq1_harmonics_rel_phase_1', 'Duration', 'Amplitude', 'CAR_mean', 'LinearTrend_Sigma', 'OtsuStdLower', 'StetsonK', 'Freq2_harmonics_rel_phase_0', 'PercentAmplitude', 'WeightedMean']
[14]:
Features Beyond1Std InterPercentileRange_25 PeriodLS_0 PeriodLS_1 PeriodLS_2 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 LinearFit_Slope ... Freq1_harmonics_rel_phase_1 Duration Amplitude CAR_mean LinearTrend_Sigma OtsuStdLower StetsonK Freq2_harmonics_rel_phase_0 PercentAmplitude WeightedMean
Light Curve
0 0.232831 0.141 0.936878 0.937007 0.936942 0.039155 0.286926 1.372133 0.03705 -0.000042 ... -0.323577 2722.847778 0.6425 -9.229883 0.000006 0.068549 0.409435 0.0 0.6745 -5.882516

1 rows × 1301 columns

Extracting features

As seen in the previous examples, the extract() method is the primary way to compute the selected features for a single light curve.

The method is flexible and accepts the light curve’s data vectors (like time, magnitude, error, etc.) as keyword arguments. In the preceding examples, we used the **lc syntax to unpack a dictionary containing all the vectors at once. However, you can also pass the required data vectors manually as individual arguments:

[15]:
import feets

fs = feets.FeatureSpace(data={"magnitude", "time"})
features = fs.extract(magnitude=lc["magnitude"], time=lc["time"])
features.as_frame()
[15]:
Features Beyond1Std InterPercentileRange_25 PeriodLS_0 PeriodLS_1 PeriodLS_2 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 StructureFunction_index_32 ... LinearTrend_ReducedChi2 MeanVariance EtaE Freq1_harmonics_rel_phase_1 Duration Amplitude LinearTrend_Sigma OtsuStdLower Freq2_harmonics_rel_phase_0 PercentAmplitude
Light Curve
0 0.232831 0.141 0.936878 0.937007 0.936942 0.039155 0.286926 1.372133 0.03705 1.699065 ... 0.141628 -0.023933 906.395326 -0.323577 2722.847778 0.6425 0.000006 0.068549 0.0 0.6745

1 rows × 1284 columns

Required data

The FeatureSpace object automatically determines the set of required data vectors based on the selected features and stores it in the required_data attribute. If you call extract() without providing all the required data, feets will raise a DataRequiredError:

[16]:
%%expect_exception feets.DataRequiredError

import feets

fs = feets.FeatureSpace(data={"magnitude", "time"})

print(f"Required data: {list(fs.required_data)}")

fs.extract(time=lc["time"])
Required data: ['magnitude', 'time']
---------------------------------------------------------------------------
DataRequiredError                         Traceback (most recent call last)
Cell In[16], line 7
      3 fs = feets.FeatureSpace(data={"magnitude", "time"})
      5 print(f"Required data: {list(fs.required_data)}")
----> 7 fs.extract(time=lc["time"])

File ~/.local/share/mamba/envs/feets/lib/python3.13/site-packages/feets/core.py:461, in FeatureSpace.extract(self, **lc)
    435 def extract(self, **lc):
    436     """Extract the selected features from the provided light curve.
    437
    438     Parameters
   (...)    459     Features(feature_names={'Mean'}, length=1)
    460     """
--> 461     return self.extract_many(lc)

File ~/.local/share/mamba/envs/feets/lib/python3.13/site-packages/feets/core.py:425, in FeatureSpace.extract_many(self, *lcs)
    397 def extract_many(self, *lcs):
    398     """Extract the selected features from the provided light curves.
    399
    400     Parameters
   (...)    423     Features(feature_names={'Mean'}, length=2)
    424     """
--> 425     features_by_lc = run(
    426         extractors=self._extractors,
    427         selected_features=self._selected_features,
    428         required_data=self._required_data,
    429         dask_options=self.dask_options,
    430         lcs=list(lcs),
    431     )
    433     return Features(features=features_by_lc, extractors=self._extractors)

File ~/.local/share/mamba/envs/feets/lib/python3.13/site-packages/feets/runner.py:187, in run(extractors, selected_features, required_data, lcs, dask_options)
    184 if dask_options is None:
    185     dask_options = copy.deepcopy(DEFAULT_DASK_OPTIONS)
--> 187 _validate_required_data(
    188     required_data=required_data, lcs=lcs, dask_options=dask_options
    189 )
    191 delayed_features_by_lc = [
    192     _run_single(
    193         extractors=extractors,
   (...)    197     for lc in lcs
    198 ]
    200 features_by_lc = dask.compute(*delayed_features_by_lc, **dask_options)

File ~/.local/share/mamba/envs/feets/lib/python3.13/site-packages/feets/runner.py:61, in _validate_required_data(required_data, lcs, dask_options)
     59 def _validate_required_data(*, required_data, lcs, dask_options):
     60     validations = [
---> 61         _validate_required_data_single(
     62             required_data=required_data,
     63             lc=lc,
     64         )
     65         for lc in lcs
     66     ]
     68     dask.compute(*validations, **dask_options)

File ~/.local/share/mamba/envs/feets/lib/python3.13/site-packages/feets/runner.py:54, in _validate_required_data_single(required_data, lc)
     52 if missing_data:
     53     missing_str = ", ".join(missing_data)
---> 54     raise DataRequiredError(
     55         f"Missing required data vectors in light curve: {missing_str}"
     56     )

DataRequiredError: Missing required data vectors in light curve: magnitude

Dependency handling

Also, the FeatureSpace will automatically resolve and extract any dependencies required by your selected features, so you don’t need to include them manually:

[17]:
import feets

# Signature depends on MedianAmplitude and PeriodLS
fs = feets.FeatureSpace(only={"Signature"})

print(f"Selected features: {list(fs.selected_features)}")
print(f"Actual extractors that will be executed: {list(fs.extractors)}")

features = fs.extract(**lc)
features.as_frame()
Selected features: ['Signature']
Actual extractors that will be executed: [AstropyLombScargle(lscargle_kwds=None, fap_kwds=None, nperiods=3), MedianAmplitude(), Signature(phase_bins=18, mag_bins=12)]
[17]:
Features Signature_0_ph_0_mag_0 Signature_0_ph_1_mag_0 Signature_0_ph_2_mag_0 Signature_0_ph_3_mag_0 Signature_0_ph_4_mag_0 Signature_0_ph_5_mag_0 Signature_0_ph_6_mag_0 Signature_0_ph_7_mag_0 Signature_0_ph_8_mag_0 Signature_0_ph_9_mag_0 ... Signature_2_ph_8_mag_11 Signature_2_ph_9_mag_11 Signature_2_ph_10_mag_11 Signature_2_ph_11_mag_11 Signature_2_ph_12_mag_11 Signature_2_ph_13_mag_11 Signature_2_ph_14_mag_11 Signature_2_ph_15_mag_11 Signature_2_ph_16_mag_11 Signature_2_ph_17_mag_11
Light Curve
0 0.037444 0.0 0.0 0.037444 0.411888 2.059439 0.224666 0.0 0.0 0.0 ... 0.0 0.112062 0.410895 1.792996 0.373541 0.0 0.0 0.0 0.0 0.0

1 rows × 648 columns

Configuring extractor parameters

You can pass extractor-specific parameters during the FeatureSpace initialization to customize the behaviour of some extractors.

For example, the AstropyLombScargle extractor, responsible of calculating the PeriodLS feature, can be configured with the number of periods to evaluate:

[18]:
import feets

fs = feets.FeatureSpace(
    only=["PeriodLS"],
    AstropyLombScargle={"nperiods": 2},
)

print(f"Extractors: {list(fs.extractors)}")

features = fs.extract(**lc)
features.as_frame()
Extractors: [AstropyLombScargle(lscargle_kwds=None, fap_kwds=None, nperiods=2)]
[18]:
Features PeriodLS_0 PeriodLS_1
Light Curve
0 0.937007 0.936942

Working with multiple light-curves

While the previous examples have all focused on extracting features from a single light-curve, the true power of feets is revealed when working with large collections of time series

The library is specifically designed and optimized for batch processing, enabling the efficient, parallel extraction of features from multiple light-curves at once. This capability is essential for large-scale analyses, such as those required for astronomical surveys, where thousands or even millions of light-curves must be processed.

Extracting with extract_many()

The extract_many() method takes multiple light-curves and computes the features for all of them:

[19]:
import feets

macho_dataset = macho.load_MACHO_example()
# Here, we treat the two bands of the MACHO light-curve
# as separate light-curves.
lcs = [macho_dataset.data.B, macho_dataset.data.R]

fs = feets.FeatureSpace(data={"magnitude", "time"})
features = fs.extract_many(*lcs)
features.as_frame()
[19]:
Features Beyond1Std InterPercentileRange_25 PeriodLS_0 PeriodLS_1 PeriodLS_2 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 StructureFunction_index_32 ... LinearTrend_ReducedChi2 MeanVariance EtaE Freq1_harmonics_rel_phase_1 Duration Amplitude LinearTrend_Sigma OtsuStdLower Freq2_harmonics_rel_phase_0 PercentAmplitude
Light Curve
0 0.192713 0.14875 0.936878 0.937007 0.936942 0.039165 0.321164 24.601220 0.042575 1.678575 ... 0.169067 -0.028591 778.364481 -0.33378 2722.847778 1.2860 0.000007 0.078328 0.0 1.959
1 0.170360 0.13100 0.937034 0.936905 0.936969 0.032167 0.360102 37.263669 0.032373 1.762988 ... 0.201420 -0.036147 7843.416048 0.32875 2717.867118 1.5325 0.000010 0.107274 0.0 2.255

2 rows × 1284 columns

Selecting features with from_lightcurves()

Similarly to the from_lightcurve() class method, from_lightcurves() can be used to create a new FeatureSpace that can extract all possible features based on the data available across multiple light-curves.

This method inspects the given light-curves, determines the data vectors that are present in the intersection of all of them, and configures a new FeatureSpace to compute all compatible features:

[20]:
import feets
import numpy as np

# Example light-curves with different data vectors
# Only the "time" and "magnitude" vectors are common to both of them
lc1 = {
    "time": np.array([1, 2, 3, 4, 5]),
    "magnitude": np.array([10, 11, 10.5, 10.7, 10.3]),
}

lc2 = {
    "time": np.array([1, 2, 3, 4, 5]),
    "magnitude": np.array([12, 11.5, 11.8, 12.1, 11.9]),
    "error": np.array([0.1, 0.1, 0.1, 0.1, 0.1]),
}

lcs = [lc1, lc2]

fs = feets.FeatureSpace.from_lightcurves(*lcs)

print(f"Required data: {list(fs.required_data)}")

features = fs.extract_many(*lcs)
features.as_frame()
Required data: ['magnitude', 'time']
/home/felipe/.local/share/mamba/envs/feets/lib/python3.13/site-packages/astropy/timeseries/periodograms/lombscargle/_statistics.py:251: RuntimeWarning: invalid value encountered in sqrt
  return _gamma(NH) * W * (1 - Z) ** (0.5 * (NK - 1)) * np.sqrt(0.5 * NH * Z)
/home/felipe/.local/share/mamba/envs/feets/lib/python3.13/site-packages/astropy/timeseries/periodograms/lombscargle/_statistics.py:251: RuntimeWarning: invalid value encountered in sqrt
  return _gamma(NH) * W * (1 - Z) ** (0.5 * (NK - 1)) * np.sqrt(0.5 * NH * Z)
[20]:
Features Beyond1Std InterPercentileRange_25 PeriodLS_0 PeriodLS_1 PeriodLS_2 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 StructureFunction_index_32 ... LinearTrend_ReducedChi2 MeanVariance EtaE Freq1_harmonics_rel_phase_1 Duration Amplitude LinearTrend_Sigma OtsuStdLower Freq2_harmonics_rel_phase_0 PercentAmplitude
Light Curve
0 0.4 0.55 0.049938 0.047676 0.047562 0.367658 0.583333 -0.378121 4.367029 1.478330 ... 0.436272 0.036266 2.500000 -0.328804 4.0 0.5 0.137961 0.212132 0.0 0.5
1 0.4 0.30 0.016201 0.047676 0.047562 0.364873 0.450000 1.128515 0.846688 1.499527 ... 0.255604 0.019411 2.216981 0.214519 4.0 0.3 0.080829 0.000000 0.0 0.4

2 rows × 1284 columns

Saving and loading custom configurations

To ensure the reproducibility of your experiments and to easily share your feature extraction setup, feets allows you to save and load your FeatureSpace configuration. This includes the selected features and any custom parameters for the extractors. The configuration can be saved to common formats like JSON or YAML, making it both human-readable and machine-parseable.

[21]:
import feets

fs = feets.FeatureSpace(
    data={"magnitude", "time", "error"},
    only=["PeriodLS", "Mean"],
    AstropyLombScargle={"nperiods": 2}
)

fs.to_dict()
[21]:
{'selected_features': {'Mean', 'PeriodLS'},
 'required_data': {'magnitude', 'time'},
 'dask_options': None,
 'extractors': [{'AstropyLombScargle': {'lscargle_kwds': None,
    'fap_kwds': None,
    'nperiods': 2}},
  {'Mean': {'transform': None}}]}
[22]:
from feets import read_json

# Save as JSON
fs.to_json(path_or_buffer="my_feature_space.json", indent=2)
!cat my_feature_space.json
{
  "selected_features": [
    "PeriodLS",
    "Mean"
  ],
  "required_data": [
    "magnitude",
    "time"
  ],
  "dask_options": null,
  "extractors": [
    {
      "AstropyLombScargle": {
        "lscargle_kwds": null,
        "fap_kwds": null,
        "nperiods": 2
      }
    },
    {
      "Mean": {
        "transform": null
      }
    }
  ]
}
[23]:
# Load from JSON file
loaded_fs = read_json("my_feature_space.json")
loaded_fs.to_dict()
[23]:
{'selected_features': {'Mean', 'PeriodLS'},
 'required_data': {'magnitude', 'time'},
 'dask_options': None,
 'extractors': [{'AstropyLombScargle': {'lscargle_kwds': None,
    'fap_kwds': None,
    'nperiods': 2}},
  {'Mean': {'transform': None}}]}

7. Analysing results: The Features object

The extract() and extract_many() methods of the FeatureSpace class return a Features object. This object serves as a specialized container for the extracted feature values, designed to make the results easy to work with, whether you’ve processed a single time series or a large batch.

The Features object provides an intuitive API that allows you to access your data in multiple ways. You can retrieve all features for a specific light curve by its index, or you can access the values of a single feature across all light curves by its name.

[24]:
import feets

macho_dataset = macho.load_MACHO_example()
# Here, we treat the two bands of the MACHO light-curve
# as separate light-curves.
lcs = [macho_dataset.data.B, macho_dataset.data.R]

fs = feets.FeatureSpace.from_lightcurves(*lcs)

features = fs.extract_many(*lcs)
features

[24]:
<Features feature_names={'BeyondNStd', 'InterPercentileRange', 'PeriodLS', 'Cusum', 'OtsuMeanDiff', 'SmallKurtosis', 'Freq2_harmonics_amplitude_2', 'LinearFit_Slope', 'StructureFunction_index_32', 'ExcessVariance', 'AndersonDarling', 'Psi_eta', 'MedianBRP', 'Freq2_harmonics_rel_phase_1', 'Freq2_harmonics_amplitude_1', 'DeltamDeltat', 'TimeMean', 'Periodogram_Peaks', 'Freq3_harmonics_amplitude_1', 'Gskew', 'Freq2_harmonics_amplitude_3', 'MedianAbsDev', 'Freq1_harmonics_amplitude_1', 'Freq2_harmonics_rel_phase_2', 'OtsuLowerToAllRatio', 'Freq3_harmonics_amplitude_2', 'Period_fit', 'Freq1_harmonics_amplitude_3', 'MaxTimeInterval', 'Autocor_length', 'MaxSlope', 'StetsonK_AC', 'LinearTrend', 'Freq1_harmonics_amplitude_2', 'Freq2_harmonics_amplitude_0', 'Con', 'Freq3_harmonics_amplitude_0', 'Freq3_harmonics_amplitude_3', 'Freq2_harmonics_rel_phase_3', 'Periodogram_S_to_N', 'Freq1_harmonics_rel_phase_3', 'PercentageRatio', 'MedianAmplitude', 'Skew', 'Signature', 'MinTimeInterval', 'Freq1_harmonics_rel_phase_2', 'CAR_tau', 'StructureFunction_index_31', 'Freq1_harmonics_amplitude_0', 'Freq3_harmonics_rel_phase_0', 'Eta', 'Q31', 'Freq3_harmonics_rel_phase_1', 'SlottedALength', 'PercentDiffPercentile', 'Freq3_harmonics_rel_phase_3', 'OtsuStdUpper', 'Roms', 'TimeStd', 'StructureFunction_index_21', 'WeightedBeyondNStd', 'PairSlopeTrend', 'LinearFit_ReducedChi2', 'LinearFit_Sigma', 'Freq3_harmonics_rel_phase_2', 'Psi_CS', 'CAR_sigma', 'Std', 'Rcs', 'Freq1_harmonics_rel_phase_0', 'ReducedChi2', 'Mean', 'LinearTrend_ReducedChi2', 'MeanVariance', 'EtaE', 'Freq1_harmonics_rel_phase_1', 'Duration', 'Amplitude', 'CAR_mean', 'LinearTrend_Sigma', 'OtsuStdLower', 'StetsonK', 'Freq2_harmonics_rel_phase_0', 'PercentAmplitude', 'WeightedMean'}, length=2>

Accessing results by light-curve index

You can access the features for a specific light-curve by its numerical index, just as you would with a Python list. When you process a batch of light curves using extract_many(), the resulting Features object stores the output for each light-curve in the same order they were provided.

For instance, to get all the features for the first light-curve in the batch:

[25]:
features[0]
[25]:
{'BeyondNStd': np.float64(0.19271255060728745),
 'InterPercentileRange': np.float64(0.14874999999999972),
 'PeriodLS': array([0.93687774, 0.9370067 , 0.93694222]),
 'Cusum': np.float64(0.03916531667352304),
 'OtsuMeanDiff': np.float64(0.3211643909192903),
 'SmallKurtosis': np.float64(24.601219812547757),
 'Freq2_harmonics_amplitude_2': np.float64(0.04257502827884412),
 'LinearFit_Slope': np.float64(-0.0011309055076097413),
 'StructureFunction_index_32': np.float64(1.6785747198526637),
 'ExcessVariance': np.float64(-39148.71194506315),
 'AndersonDarling': np.float64(57.90150062084208),
 'Psi_eta': array([1.34906902, 1.05494512, 1.00416722]),
 'MedianBRP': np.float64(0.7376518218623481),
 'Freq2_harmonics_rel_phase_1': np.float64(0.5642753580375102),
 'Freq2_harmonics_amplitude_1': np.float64(0.0527213147632131),
 'DeltamDeltat': {'dt_0_dm_0': np.int64(0),
  'dt_1_dm_0': np.int64(0),
  'dt_2_dm_0': np.int64(0),
  'dt_3_dm_0': np.int64(0),
  'dt_4_dm_0': np.int64(0),
  'dt_5_dm_0': np.int64(0),
  'dt_6_dm_0': np.int64(0),
  'dt_7_dm_0': np.int64(0),
  'dt_8_dm_0': np.int64(0),
  'dt_9_dm_0': np.int64(0),
  'dt_10_dm_0': np.int64(0),
  'dt_11_dm_0': np.int64(0),
  'dt_12_dm_0': np.int64(0),
  'dt_13_dm_0': np.int64(0),
  'dt_14_dm_0': np.int64(0),
  'dt_15_dm_0': np.int64(0),
  'dt_16_dm_0': np.int64(0),
  'dt_17_dm_0': np.int64(0),
  'dt_18_dm_0': np.int64(0),
  'dt_19_dm_0': np.int64(0),
  'dt_20_dm_0': np.int64(0),
  'dt_21_dm_0': np.int64(0),
  'dt_22_dm_0': np.int64(0),
  'dt_0_dm_1': np.int64(0),
  'dt_1_dm_1': np.int64(0),
  'dt_2_dm_1': np.int64(0),
  'dt_3_dm_1': np.int64(0),
  'dt_4_dm_1': np.int64(0),
  'dt_5_dm_1': np.int64(0),
  'dt_6_dm_1': np.int64(0),
  'dt_7_dm_1': np.int64(0),
  'dt_8_dm_1': np.int64(0),
  'dt_9_dm_1': np.int64(0),
  'dt_10_dm_1': np.int64(0),
  'dt_11_dm_1': np.int64(0),
  'dt_12_dm_1': np.int64(0),
  'dt_13_dm_1': np.int64(0),
  'dt_14_dm_1': np.int64(0),
  'dt_15_dm_1': np.int64(0),
  'dt_16_dm_1': np.int64(0),
  'dt_17_dm_1': np.int64(0),
  'dt_18_dm_1': np.int64(0),
  'dt_19_dm_1': np.int64(0),
  'dt_20_dm_1': np.int64(0),
  'dt_21_dm_1': np.int64(0),
  'dt_22_dm_1': np.int64(0),
  'dt_0_dm_2': np.int64(0),
  'dt_1_dm_2': np.int64(0),
  'dt_2_dm_2': np.int64(0),
  'dt_3_dm_2': np.int64(0),
  'dt_4_dm_2': np.int64(0),
  'dt_5_dm_2': np.int64(0),
  'dt_6_dm_2': np.int64(0),
  'dt_7_dm_2': np.int64(0),
  'dt_8_dm_2': np.int64(0),
  'dt_9_dm_2': np.int64(0),
  'dt_10_dm_2': np.int64(0),
  'dt_11_dm_2': np.int64(0),
  'dt_12_dm_2': np.int64(0),
  'dt_13_dm_2': np.int64(0),
  'dt_14_dm_2': np.int64(0),
  'dt_15_dm_2': np.int64(0),
  'dt_16_dm_2': np.int64(0),
  'dt_17_dm_2': np.int64(0),
  'dt_18_dm_2': np.int64(0),
  'dt_19_dm_2': np.int64(0),
  'dt_20_dm_2': np.int64(0),
  'dt_21_dm_2': np.int64(0),
  'dt_22_dm_2': np.int64(0),
  'dt_0_dm_3': np.int64(0),
  'dt_1_dm_3': np.int64(0),
  'dt_2_dm_3': np.int64(0),
  'dt_3_dm_3': np.int64(0),
  'dt_4_dm_3': np.int64(0),
  'dt_5_dm_3': np.int64(0),
  'dt_6_dm_3': np.int64(0),
  'dt_7_dm_3': np.int64(0),
  'dt_8_dm_3': np.int64(0),
  'dt_9_dm_3': np.int64(0),
  'dt_10_dm_3': np.int64(0),
  'dt_11_dm_3': np.int64(0),
  'dt_12_dm_3': np.int64(0),
  'dt_13_dm_3': np.int64(0),
  'dt_14_dm_3': np.int64(0),
  'dt_15_dm_3': np.int64(0),
  'dt_16_dm_3': np.int64(0),
  'dt_17_dm_3': np.int64(0),
  'dt_18_dm_3': np.int64(0),
  'dt_19_dm_3': np.int64(0),
  'dt_20_dm_3': np.int64(0),
  'dt_21_dm_3': np.int64(0),
  'dt_22_dm_3': np.int64(0),
  'dt_0_dm_4': np.int64(0),
  'dt_1_dm_4': np.int64(0),
  'dt_2_dm_4': np.int64(0),
  'dt_3_dm_4': np.int64(0),
  'dt_4_dm_4': np.int64(0),
  'dt_5_dm_4': np.int64(0),
  'dt_6_dm_4': np.int64(0),
  'dt_7_dm_4': np.int64(0),
  'dt_8_dm_4': np.int64(0),
  'dt_9_dm_4': np.int64(0),
  'dt_10_dm_4': np.int64(0),
  'dt_11_dm_4': np.int64(0),
  'dt_12_dm_4': np.int64(0),
  'dt_13_dm_4': np.int64(0),
  'dt_14_dm_4': np.int64(0),
  'dt_15_dm_4': np.int64(1),
  'dt_16_dm_4': np.int64(1),
  'dt_17_dm_4': np.int64(0),
  'dt_18_dm_4': np.int64(0),
  'dt_19_dm_4': np.int64(0),
  'dt_20_dm_4': np.int64(0),
  'dt_21_dm_4': np.int64(0),
  'dt_22_dm_4': np.int64(0),
  'dt_0_dm_5': np.int64(0),
  'dt_1_dm_5': np.int64(0),
  'dt_2_dm_5': np.int64(0),
  'dt_3_dm_5': np.int64(0),
  'dt_4_dm_5': np.int64(0),
  'dt_5_dm_5': np.int64(0),
  'dt_6_dm_5': np.int64(0),
  'dt_7_dm_5': np.int64(0),
  'dt_8_dm_5': np.int64(0),
  'dt_9_dm_5': np.int64(0),
  'dt_10_dm_5': np.int64(0),
  'dt_11_dm_5': np.int64(0),
  'dt_12_dm_5': np.int64(0),
  'dt_13_dm_5': np.int64(0),
  'dt_14_dm_5': np.int64(0),
  'dt_15_dm_5': np.int64(0),
  'dt_16_dm_5': np.int64(1),
  'dt_17_dm_5': np.int64(1),
  'dt_18_dm_5': np.int64(1),
  'dt_19_dm_5': np.int64(0),
  'dt_20_dm_5': np.int64(0),
  'dt_21_dm_5': np.int64(0),
  'dt_22_dm_5': np.int64(0),
  'dt_0_dm_6': np.int64(0),
  'dt_1_dm_6': np.int64(0),
  'dt_2_dm_6': np.int64(0),
  'dt_3_dm_6': np.int64(0),
  'dt_4_dm_6': np.int64(0),
  'dt_5_dm_6': np.int64(0),
  'dt_6_dm_6': np.int64(0),
  'dt_7_dm_6': np.int64(0),
  'dt_8_dm_6': np.int64(0),
  'dt_9_dm_6': np.int64(0),
  'dt_10_dm_6': np.int64(0),
  'dt_11_dm_6': np.int64(0),
  'dt_12_dm_6': np.int64(0),
  'dt_13_dm_6': np.int64(0),
  'dt_14_dm_6': np.int64(1),
  'dt_15_dm_6': np.int64(0),
  'dt_16_dm_6': np.int64(0),
  'dt_17_dm_6': np.int64(1),
  'dt_18_dm_6': np.int64(1),
  'dt_19_dm_6': np.int64(0),
  'dt_20_dm_6': np.int64(0),
  'dt_21_dm_6': np.int64(0),
  'dt_22_dm_6': np.int64(0),
  'dt_0_dm_7': np.int64(0),
  'dt_1_dm_7': np.int64(0),
  'dt_2_dm_7': np.int64(0),
  'dt_3_dm_7': np.int64(0),
  'dt_4_dm_7': np.int64(0),
  'dt_5_dm_7': np.int64(0),
  'dt_6_dm_7': np.int64(0),
  'dt_7_dm_7': np.int64(0),
  'dt_8_dm_7': np.int64(0),
  'dt_9_dm_7': np.int64(0),
  'dt_10_dm_7': np.int64(0),
  'dt_11_dm_7': np.int64(0),
  'dt_12_dm_7': np.int64(0),
  'dt_13_dm_7': np.int64(0),
  'dt_14_dm_7': np.int64(0),
  'dt_15_dm_7': np.int64(1),
  'dt_16_dm_7': np.int64(1),
  'dt_17_dm_7': np.int64(0),
  'dt_18_dm_7': np.int64(1),
  'dt_19_dm_7': np.int64(1),
  'dt_20_dm_7': np.int64(0),
  'dt_21_dm_7': np.int64(0),
  'dt_22_dm_7': np.int64(1),
  'dt_0_dm_8': np.int64(0),
  'dt_1_dm_8': np.int64(0),
  'dt_2_dm_8': np.int64(0),
  'dt_3_dm_8': np.int64(0),
  'dt_4_dm_8': np.int64(0),
  'dt_5_dm_8': np.int64(0),
  'dt_6_dm_8': np.int64(0),
  'dt_7_dm_8': np.int64(0),
  'dt_8_dm_8': np.int64(0),
  'dt_9_dm_8': np.int64(0),
  'dt_10_dm_8': np.int64(0),
  'dt_11_dm_8': np.int64(0),
  'dt_12_dm_8': np.int64(0),
  'dt_13_dm_8': np.int64(0),
  'dt_14_dm_8': np.int64(0),
  'dt_15_dm_8': np.int64(1),
  'dt_16_dm_8': np.int64(1),
  'dt_17_dm_8': np.int64(0),
  'dt_18_dm_8': np.int64(1),
  'dt_19_dm_8': np.int64(1),
  'dt_20_dm_8': np.int64(1),
  'dt_21_dm_8': np.int64(0),
  'dt_22_dm_8': np.int64(1),
  'dt_0_dm_9': np.int64(1),
  'dt_1_dm_9': np.int64(1),
  'dt_2_dm_9': np.int64(0),
  'dt_3_dm_9': np.int64(0),
  'dt_4_dm_9': np.int64(0),
  'dt_5_dm_9': np.int64(0),
  'dt_6_dm_9': np.int64(0),
  'dt_7_dm_9': np.int64(0),
  'dt_8_dm_9': np.int64(0),
  'dt_9_dm_9': np.int64(0),
  'dt_10_dm_9': np.int64(0),
  'dt_11_dm_9': np.int64(0),
  'dt_12_dm_9': np.int64(0),
  'dt_13_dm_9': np.int64(0),
  'dt_14_dm_9': np.int64(0),
  'dt_15_dm_9': np.int64(0),
  'dt_16_dm_9': np.int64(0),
  'dt_17_dm_9': np.int64(1),
  'dt_18_dm_9': np.int64(1),
  'dt_19_dm_9': np.int64(1),
  'dt_20_dm_9': np.int64(1),
  'dt_21_dm_9': np.int64(1),
  'dt_22_dm_9': np.int64(0),
  'dt_0_dm_10': np.int64(1),
  'dt_1_dm_10': np.int64(1),
  'dt_2_dm_10': np.int64(1),
  'dt_3_dm_10': np.int64(0),
  'dt_4_dm_10': np.int64(0),
  'dt_5_dm_10': np.int64(0),
  'dt_6_dm_10': np.int64(0),
  'dt_7_dm_10': np.int64(0),
  'dt_8_dm_10': np.int64(0),
  'dt_9_dm_10': np.int64(0),
  'dt_10_dm_10': np.int64(0),
  'dt_11_dm_10': np.int64(0),
  'dt_12_dm_10': np.int64(0),
  'dt_13_dm_10': np.int64(0),
  'dt_14_dm_10': np.int64(0),
  'dt_15_dm_10': np.int64(0),
  'dt_16_dm_10': np.int64(0),
  'dt_17_dm_10': np.int64(1),
  'dt_18_dm_10': np.int64(1),
  'dt_19_dm_10': np.int64(1),
  'dt_20_dm_10': np.int64(1),
  'dt_21_dm_10': np.int64(1),
  'dt_22_dm_10': np.int64(1),
  'dt_0_dm_11': np.int64(1),
  'dt_1_dm_11': np.int64(1),
  'dt_2_dm_11': np.int64(1),
  'dt_3_dm_11': np.int64(1),
  'dt_4_dm_11': np.int64(0),
  'dt_5_dm_11': np.int64(0),
  'dt_6_dm_11': np.int64(0),
  'dt_7_dm_11': np.int64(0),
  'dt_8_dm_11': np.int64(0),
  'dt_9_dm_11': np.int64(0),
  'dt_10_dm_11': np.int64(0),
  'dt_11_dm_11': np.int64(0),
  'dt_12_dm_11': np.int64(0),
  'dt_13_dm_11': np.int64(0),
  'dt_14_dm_11': np.int64(0),
  'dt_15_dm_11': np.int64(1),
  'dt_16_dm_11': np.int64(0),
  'dt_17_dm_11': np.int64(1),
  'dt_18_dm_11': np.int64(1),
  'dt_19_dm_11': np.int64(1),
  'dt_20_dm_11': np.int64(1),
  'dt_21_dm_11': np.int64(1),
  'dt_22_dm_11': np.int64(1),
  'dt_0_dm_12': np.int64(1),
  'dt_1_dm_12': np.int64(1),
  'dt_2_dm_12': np.int64(1),
  'dt_3_dm_12': np.int64(1),
  'dt_4_dm_12': np.int64(1),
  'dt_5_dm_12': np.int64(0),
  'dt_6_dm_12': np.int64(0),
  'dt_7_dm_12': np.int64(0),
  'dt_8_dm_12': np.int64(0),
  'dt_9_dm_12': np.int64(0),
  'dt_10_dm_12': np.int64(0),
  'dt_11_dm_12': np.int64(0),
  'dt_12_dm_12': np.int64(0),
  'dt_13_dm_12': np.int64(0),
  'dt_14_dm_12': np.int64(0),
  'dt_15_dm_12': np.int64(1),
  'dt_16_dm_12': np.int64(0),
  'dt_17_dm_12': np.int64(0),
  'dt_18_dm_12': np.int64(1),
  'dt_19_dm_12': np.int64(1),
  'dt_20_dm_12': np.int64(1),
  'dt_21_dm_12': np.int64(1),
  'dt_22_dm_12': np.int64(1),
  'dt_0_dm_13': np.int64(1),
  'dt_1_dm_13': np.int64(1),
  'dt_2_dm_13': np.int64(1),
  'dt_3_dm_13': np.int64(1),
  'dt_4_dm_13': np.int64(1),
  'dt_5_dm_13': np.int64(1),
  'dt_6_dm_13': np.int64(1),
  'dt_7_dm_13': np.int64(1),
  'dt_8_dm_13': np.int64(1),
  'dt_9_dm_13': np.int64(0),
  'dt_10_dm_13': np.int64(0),
  'dt_11_dm_13': np.int64(0),
  'dt_12_dm_13': np.int64(0),
  'dt_13_dm_13': np.int64(0),
  'dt_14_dm_13': np.int64(0),
  'dt_15_dm_13': np.int64(0),
  'dt_16_dm_13': np.int64(1),
  'dt_17_dm_13': np.int64(1),
  'dt_18_dm_13': np.int64(0),
  'dt_19_dm_13': np.int64(1),
  'dt_20_dm_13': np.int64(1),
  'dt_21_dm_13': np.int64(1),
  'dt_22_dm_13': np.int64(1),
  'dt_0_dm_14': np.int64(1),
  'dt_1_dm_14': np.int64(1),
  'dt_2_dm_14': np.int64(1),
  'dt_3_dm_14': np.int64(1),
  'dt_4_dm_14': np.int64(1),
  'dt_5_dm_14': np.int64(1),
  'dt_6_dm_14': np.int64(1),
  'dt_7_dm_14': np.int64(1),
  'dt_8_dm_14': np.int64(1),
  'dt_9_dm_14': np.int64(1),
  'dt_10_dm_14': np.int64(0),
  'dt_11_dm_14': np.int64(0),
  'dt_12_dm_14': np.int64(0),
  'dt_13_dm_14': np.int64(0),
  'dt_14_dm_14': np.int64(0),
  'dt_15_dm_14': np.int64(0),
  'dt_16_dm_14': np.int64(0),
  'dt_17_dm_14': np.int64(1),
  'dt_18_dm_14': np.int64(1),
  'dt_19_dm_14': np.int64(1),
  'dt_20_dm_14': np.int64(1),
  'dt_21_dm_14': np.int64(1),
  'dt_22_dm_14': np.int64(1),
  'dt_0_dm_15': np.int64(1),
  'dt_1_dm_15': np.int64(1),
  'dt_2_dm_15': np.int64(1),
  'dt_3_dm_15': np.int64(1),
  'dt_4_dm_15': np.int64(1),
  'dt_5_dm_15': np.int64(1),
  'dt_6_dm_15': np.int64(1),
  'dt_7_dm_15': np.int64(1),
  'dt_8_dm_15': np.int64(1),
  'dt_9_dm_15': np.int64(1),
  'dt_10_dm_15': np.int64(1),
  'dt_11_dm_15': np.int64(1),
  'dt_12_dm_15': np.int64(0),
  'dt_13_dm_15': np.int64(0),
  'dt_14_dm_15': np.int64(0),
  'dt_15_dm_15': np.int64(0),
  'dt_16_dm_15': np.int64(0),
  'dt_17_dm_15': np.int64(0),
  'dt_18_dm_15': np.int64(1),
  'dt_19_dm_15': np.int64(1),
  'dt_20_dm_15': np.int64(1),
  'dt_21_dm_15': np.int64(1),
  'dt_22_dm_15': np.int64(1),
  'dt_0_dm_16': np.int64(1),
  'dt_1_dm_16': np.int64(1),
  'dt_2_dm_16': np.int64(1),
  'dt_3_dm_16': np.int64(1),
  'dt_4_dm_16': np.int64(1),
  'dt_5_dm_16': np.int64(1),
  'dt_6_dm_16': np.int64(1),
  'dt_7_dm_16': np.int64(1),
  'dt_8_dm_16': np.int64(1),
  'dt_9_dm_16': np.int64(1),
  'dt_10_dm_16': np.int64(1),
  'dt_11_dm_16': np.int64(1),
  'dt_12_dm_16': np.int64(1),
  'dt_13_dm_16': np.int64(0),
  'dt_14_dm_16': np.int64(0),
  'dt_15_dm_16': np.int64(0),
  'dt_16_dm_16': np.int64(0),
  'dt_17_dm_16': np.int64(0),
  'dt_18_dm_16': np.int64(0),
  'dt_19_dm_16': np.int64(1),
  'dt_20_dm_16': np.int64(1),
  'dt_21_dm_16': np.int64(1),
  'dt_22_dm_16': np.int64(1),
  'dt_0_dm_17': np.int64(1),
  'dt_1_dm_17': np.int64(1),
  'dt_2_dm_17': np.int64(1),
  'dt_3_dm_17': np.int64(1),
  'dt_4_dm_17': np.int64(2),
  'dt_5_dm_17': np.int64(2),
  'dt_6_dm_17': np.int64(1),
  'dt_7_dm_17': np.int64(1),
  'dt_8_dm_17': np.int64(1),
  'dt_9_dm_17': np.int64(1),
  'dt_10_dm_17': np.int64(1),
  'dt_11_dm_17': np.int64(1),
  'dt_12_dm_17': np.int64(1),
  'dt_13_dm_17': np.int64(1),
  'dt_14_dm_17': np.int64(0),
  'dt_15_dm_17': np.int64(0),
  'dt_16_dm_17': np.int64(0),
  'dt_17_dm_17': np.int64(0),
  'dt_18_dm_17': np.int64(0),
  'dt_19_dm_17': np.int64(0),
  'dt_20_dm_17': np.int64(1),
  'dt_21_dm_17': np.int64(1),
  'dt_22_dm_17': np.int64(1),
  'dt_0_dm_18': np.int64(1),
  'dt_1_dm_18': np.int64(1),
  'dt_2_dm_18': np.int64(1),
  'dt_3_dm_18': np.int64(1),
  'dt_4_dm_18': np.int64(1),
  'dt_5_dm_18': np.int64(3),
  'dt_6_dm_18': np.int64(4),
  'dt_7_dm_18': np.int64(1),
  'dt_8_dm_18': np.int64(1),
  'dt_9_dm_18': np.int64(1),
  'dt_10_dm_18': np.int64(1),
  'dt_11_dm_18': np.int64(1),
  'dt_12_dm_18': np.int64(1),
  'dt_13_dm_18': np.int64(1),
  'dt_14_dm_18': np.int64(1),
  'dt_15_dm_18': np.int64(0),
  'dt_16_dm_18': np.int64(0),
  'dt_17_dm_18': np.int64(0),
  'dt_18_dm_18': np.int64(0),
  'dt_19_dm_18': np.int64(0),
  'dt_20_dm_18': np.int64(0),
  'dt_21_dm_18': np.int64(1),
  'dt_22_dm_18': np.int64(1),
  'dt_0_dm_19': np.int64(1),
  'dt_1_dm_19': np.int64(1),
  'dt_2_dm_19': np.int64(2),
  'dt_3_dm_19': np.int64(2),
  'dt_4_dm_19': np.int64(2),
  'dt_5_dm_19': np.int64(2),
  'dt_6_dm_19': np.int64(6),
  'dt_7_dm_19': np.int64(6),
  'dt_8_dm_19': np.int64(2),
  'dt_9_dm_19': np.int64(2),
  'dt_10_dm_19': np.int64(2),
  'dt_11_dm_19': np.int64(2),
  'dt_12_dm_19': np.int64(1),
  'dt_13_dm_19': np.int64(1),
  'dt_14_dm_19': np.int64(1),
  'dt_15_dm_19': np.int64(1),
  'dt_16_dm_19': np.int64(0),
  'dt_17_dm_19': np.int64(0),
  'dt_18_dm_19': np.int64(0),
  'dt_19_dm_19': np.int64(0),
  'dt_20_dm_19': np.int64(0),
  'dt_21_dm_19': np.int64(0),
  'dt_22_dm_19': np.int64(1),
  'dt_0_dm_20': np.int64(1),
  'dt_1_dm_20': np.int64(1),
  'dt_2_dm_20': np.int64(1),
  'dt_3_dm_20': np.int64(2),
  'dt_4_dm_20': np.int64(3),
  'dt_5_dm_20': np.int64(3),
  'dt_6_dm_20': np.int64(3),
  'dt_7_dm_20': np.int64(10),
  'dt_8_dm_20': np.int64(10),
  'dt_9_dm_20': np.int64(3),
  'dt_10_dm_20': np.int64(3),
  'dt_11_dm_20': np.int64(3),
  'dt_12_dm_20': np.int64(3),
  'dt_13_dm_20': np.int64(1),
  'dt_14_dm_20': np.int64(1),
  'dt_15_dm_20': np.int64(1),
  'dt_16_dm_20': np.int64(1),
  'dt_17_dm_20': np.int64(0),
  'dt_18_dm_20': np.int64(0),
  'dt_19_dm_20': np.int64(0),
  'dt_20_dm_20': np.int64(0),
  'dt_21_dm_20': np.int64(0),
  'dt_22_dm_20': np.int64(0),
  'dt_0_dm_21': np.int64(1),
  'dt_1_dm_21': np.int64(1),
  'dt_2_dm_21': np.int64(1),
  'dt_3_dm_21': np.int64(1),
  'dt_4_dm_21': np.int64(4),
  'dt_5_dm_21': np.int64(5),
  'dt_6_dm_21': np.int64(5),
  'dt_7_dm_21': np.int64(5),
  'dt_8_dm_21': np.int64(15),
  'dt_9_dm_21': np.int64(17),
  'dt_10_dm_21': np.int64(5),
  'dt_11_dm_21': np.int64(5),
  'dt_12_dm_21': np.int64(5),
  'dt_13_dm_21': np.int64(4),
  'dt_14_dm_21': np.int64(1),
  'dt_15_dm_21': np.int64(1),
  'dt_16_dm_21': np.int64(1),
  'dt_17_dm_21': np.int64(1),
  'dt_18_dm_21': np.int64(0),
  'dt_19_dm_21': np.int64(0),
  'dt_20_dm_21': np.int64(0),
  'dt_21_dm_21': np.int64(0),
  'dt_22_dm_21': np.int64(0),
  'dt_0_dm_22': np.int64(0),
  'dt_1_dm_22': np.int64(1),
  'dt_2_dm_22': np.int64(1),
  'dt_3_dm_22': np.int64(1),
  'dt_4_dm_22': np.int64(1),
  'dt_5_dm_22': np.int64(3),
  'dt_6_dm_22': np.int64(5),
  'dt_7_dm_22': np.int64(5),
  'dt_8_dm_22': np.int64(5),
  'dt_9_dm_22': np.int64(16),
  'dt_10_dm_22': np.int64(19),
  'dt_11_dm_22': np.int64(6),
  'dt_12_dm_22': np.int64(5),
  'dt_13_dm_22': np.int64(6),
  'dt_14_dm_22': np.int64(5),
  'dt_15_dm_22': np.int64(1),
  'dt_16_dm_22': np.int64(1),
  'dt_17_dm_22': np.int64(1),
  'dt_18_dm_22': np.int64(0),
  'dt_19_dm_22': np.int64(0),
  'dt_20_dm_22': np.int64(0),
  'dt_21_dm_22': np.int64(0),
  'dt_22_dm_22': np.int64(0),
  'dt_0_dm_23': np.int64(0),
  'dt_1_dm_23': np.int64(0),
  'dt_2_dm_23': np.int64(1),
  'dt_3_dm_23': np.int64(1),
  'dt_4_dm_23': np.int64(1),
  'dt_5_dm_23': np.int64(1),
  'dt_6_dm_23': np.int64(2),
  'dt_7_dm_23': np.int64(2),
  'dt_8_dm_23': np.int64(2),
  'dt_9_dm_23': np.int64(2),
  'dt_10_dm_23': np.int64(7),
  'dt_11_dm_23': np.int64(8),
  'dt_12_dm_23': np.int64(2),
  'dt_13_dm_23': np.int64(2),
  'dt_14_dm_23': np.int64(2),
  'dt_15_dm_23': np.int64(2),
  'dt_16_dm_23': np.int64(1),
  'dt_17_dm_23': np.int64(1),
  'dt_18_dm_23': np.int64(0),
  'dt_19_dm_23': np.int64(0),
  'dt_20_dm_23': np.int64(0),
  'dt_21_dm_23': np.int64(0),
  'dt_22_dm_23': np.int64(0)},
 'TimeMean': np.float64(49779.72180558461),
 'Periodogram_Peaks': array([14.85852944, 16.16283689,  7.58645406]),
 'Freq3_harmonics_amplitude_1': np.float64(0.012261603253985691),
 'Gskew': np.float64(0.24899999999999878),
 'Freq2_harmonics_amplitude_3': np.float64(0.023970327506263413),
 'MedianAbsDev': np.float64(0.05799999999999983),
 'Freq1_harmonics_amplitude_1': np.float64(0.048572604996658164),
 'Freq2_harmonics_rel_phase_2': np.float64(1.2642320848359123),
 'OtsuLowerToAllRatio': np.float64(0.7919028340080971),
 'Freq3_harmonics_amplitude_2': np.float64(0.008769191136924996),
 'Period_fit': array([2.55854200e-087, 5.92991171e-103, 2.09850211e-106]),
 'Freq1_harmonics_amplitude_3': np.float64(0.019562763134165006),
 'MaxTimeInterval': np.float64(53.73279000000184),
 'Autocor_length': 1,
 'MaxSlope': np.float64(54.72525836116783),
 'StetsonK_AC': np.float64(0.7737153471876197),
 'LinearTrend': np.float64(5.300739282081414e-06),
 'Freq1_harmonics_amplitude_2': np.float64(0.035640504597172905),
 'Freq2_harmonics_amplitude_0': np.float64(0.030198832904408477),
 'Con': 0.0,
 'Freq3_harmonics_amplitude_0': np.float64(0.016669027079032884),
 'Freq3_harmonics_amplitude_3': np.float64(0.008635517542689685),
 'Freq2_harmonics_rel_phase_3': np.float64(1.7396194976179862),
 'Periodogram_S_to_N': array([30.73024346,  4.00818586,  3.1546253 ]),
 'Freq1_harmonics_rel_phase_3': np.float64(-1.3457074305836643),
 'PercentageRatio': np.float64(0.09425785482123482),
 'MedianAmplitude': np.float64(0.27775000000000016),
 'Skew': np.float64(2.872239160286938),
 'Signature': array([{'ph_0_mag_0': np.float64(0.03791350198844933), 'ph_1_mag_0': np.float64(0.018956750994224666), 'ph_2_mag_0': np.float64(1.2511455656188277), 'ph_3_mag_0': np.float64(0.13269725695957266), 'ph_4_mag_0': np.float64(0.0), 'ph_5_mag_0': np.float64(0.0), 'ph_6_mag_0': np.float64(0.0), 'ph_7_mag_0': np.float64(0.0), 'ph_8_mag_0': np.float64(0.0), 'ph_9_mag_0': np.float64(0.0), 'ph_10_mag_0': np.float64(0.0), 'ph_11_mag_0': np.float64(0.0), 'ph_12_mag_0': np.float64(0.0), 'ph_13_mag_0': np.float64(0.0), 'ph_14_mag_0': np.float64(1.1942753126361536), 'ph_15_mag_0': np.float64(0.13269725695957266), 'ph_16_mag_0': np.float64(0.0), 'ph_17_mag_0': np.float64(0.0), 'ph_0_mag_1': np.float64(0.0), 'ph_1_mag_1': np.float64(0.0), 'ph_2_mag_1': np.float64(0.0), 'ph_3_mag_1': np.float64(0.0), 'ph_4_mag_1': np.float64(0.0), 'ph_5_mag_1': np.float64(0.0), 'ph_6_mag_1': np.float64(0.018956750994224666), 'ph_7_mag_1': np.float64(0.018956750994224666), 'ph_8_mag_1': np.float64(1.061578055676581), 'ph_9_mag_1': np.float64(0.11374050596534802), 'ph_10_mag_1': np.float64(0.0), 'ph_11_mag_1': np.float64(0.0), 'ph_12_mag_1': np.float64(0.0), 'ph_13_mag_1': np.float64(0.0), 'ph_14_mag_1': np.float64(0.0), 'ph_15_mag_1': np.float64(0.0), 'ph_16_mag_1': np.float64(0.0), 'ph_17_mag_1': np.float64(0.0), 'ph_0_mag_2': np.float64(0.0), 'ph_1_mag_2': np.float64(0.0), 'ph_2_mag_2': np.float64(0.9288807987170083), 'ph_3_mag_2': np.float64(0.170610758948022), 'ph_4_mag_2': np.float64(0.0), 'ph_5_mag_2': np.float64(0.0), 'ph_6_mag_2': np.float64(0.0), 'ph_7_mag_2': np.float64(0.0), 'ph_8_mag_2': np.float64(0.0), 'ph_9_mag_2': np.float64(0.0), 'ph_10_mag_2': np.float64(0.0), 'ph_11_mag_2': np.float64(0.0), 'ph_12_mag_2': np.float64(0.0), 'ph_13_mag_2': np.float64(0.037913501988449345), 'ph_14_mag_2': np.float64(1.0615780556765815), 'ph_15_mag_2': np.float64(0.2653945139191455), 'ph_16_mag_2': np.float64(0.03791350198844935), 'ph_17_mag_2': np.float64(0.0), 'ph_0_mag_3': np.float64(0.0), 'ph_1_mag_3': np.float64(0.0), 'ph_2_mag_3': np.float64(0.018956750994224666), 'ph_3_mag_3': np.float64(0.0), 'ph_4_mag_3': np.float64(0.0), 'ph_5_mag_3': np.float64(0.0), 'ph_6_mag_3': np.float64(0.0), 'ph_7_mag_3': np.float64(0.0), 'ph_8_mag_3': np.float64(0.7772267907632111), 'ph_9_mag_3': np.float64(0.36017826889026866), 'ph_10_mag_3': np.float64(0.018956750994224666), 'ph_11_mag_3': np.float64(0.0), 'ph_12_mag_3': np.float64(0.0), 'ph_13_mag_3': np.float64(0.0), 'ph_14_mag_3': np.float64(0.0), 'ph_15_mag_3': np.float64(0.0), 'ph_16_mag_3': np.float64(0.0), 'ph_17_mag_3': np.float64(0.0), 'ph_0_mag_4': np.float64(0.0), 'ph_1_mag_4': np.float64(0.0), 'ph_2_mag_4': np.float64(0.6824430357920878), 'ph_3_mag_4': np.float64(0.43600527286716734), 'ph_4_mag_4': np.float64(0.170610758948022), 'ph_5_mag_4': np.float64(0.018956750994224655), 'ph_6_mag_4': np.float64(0.0), 'ph_7_mag_4': np.float64(0.0), 'ph_8_mag_4': np.float64(0.0), 'ph_9_mag_4': np.float64(0.0), 'ph_10_mag_4': np.float64(0.0), 'ph_11_mag_4': np.float64(0.0), 'ph_12_mag_4': np.float64(0.0), 'ph_13_mag_4': np.float64(0.05687025298267399), 'ph_14_mag_4': np.float64(0.3412215178960439), 'ph_15_mag_4': np.float64(0.6445295338036386), 'ph_16_mag_4': np.float64(0.30330801590759465), 'ph_17_mag_4': np.float64(0.05687025298267396), 'ph_0_mag_5': np.float64(0.0), 'ph_1_mag_5': np.float64(0.0), 'ph_2_mag_5': np.float64(0.0), 'ph_3_mag_5': np.float64(0.0), 'ph_4_mag_5': np.float64(0.0), 'ph_5_mag_5': np.float64(0.0), 'ph_6_mag_5': np.float64(0.0), 'ph_7_mag_5': np.float64(0.03791350198844933), 'ph_8_mag_5': np.float64(0.07582700397689865), 'ph_9_mag_5': np.float64(0.47391877485561673), 'ph_10_mag_5': np.float64(0.56870252982674), 'ph_11_mag_5': np.float64(0.05687025298267396), 'ph_12_mag_5': np.float64(0.0), 'ph_13_mag_5': np.float64(0.0), 'ph_14_mag_5': np.float64(0.0), 'ph_15_mag_5': np.float64(0.0), 'ph_16_mag_5': np.float64(0.0), 'ph_17_mag_5': np.float64(0.0), 'ph_0_mag_6': np.float64(0.0), 'ph_1_mag_6': np.float64(0.0), 'ph_2_mag_6': np.float64(0.05687025298267404), 'ph_3_mag_6': np.float64(0.4739187748556172), 'ph_4_mag_6': np.float64(0.7013997867863133), 'ph_5_mag_6': np.float64(0.05687025298267402), 'ph_6_mag_6': np.float64(0.0), 'ph_7_mag_6': np.float64(0.0), 'ph_8_mag_6': np.float64(0.0), 'ph_9_mag_6': np.float64(0.0), 'ph_10_mag_6': np.float64(0.0), 'ph_11_mag_6': np.float64(0.037913501988449304), 'ph_12_mag_6': np.float64(0.0), 'ph_13_mag_6': np.float64(0.0), 'ph_14_mag_6': np.float64(0.3222647669018192), 'ph_15_mag_6': np.float64(0.6634862847978633), 'ph_16_mag_6': np.float64(0.5876592808209646), 'ph_17_mag_6': np.float64(0.018956750994224655), 'ph_0_mag_7': np.float64(0.0), 'ph_1_mag_7': np.float64(0.0), 'ph_2_mag_7': np.float64(0.0), 'ph_3_mag_7': np.float64(0.0), 'ph_4_mag_7': np.float64(0.0), 'ph_5_mag_7': np.float64(0.0), 'ph_6_mag_7': np.float64(0.0), 'ph_7_mag_7': np.float64(0.0), 'ph_8_mag_7': np.float64(0.3222647669018192), 'ph_9_mag_7': np.float64(0.56870252982674), 'ph_10_mag_7': np.float64(0.24643776292492067), 'ph_11_mag_7': np.float64(0.0), 'ph_12_mag_7': np.float64(0.0), 'ph_13_mag_7': np.float64(0.0), 'ph_14_mag_7': np.float64(0.0), 'ph_15_mag_7': np.float64(0.0), 'ph_16_mag_7': np.float64(0.0), 'ph_17_mag_7': np.float64(0.0), 'ph_0_mag_8': np.float64(0.0), 'ph_1_mag_8': np.float64(0.018956750994224666), 'ph_2_mag_8': np.float64(0.5118322768440658), 'ph_3_mag_8': np.float64(0.18956750994224666), 'ph_4_mag_8': np.float64(0.07582700397689866), 'ph_5_mag_8': np.float64(0.0), 'ph_6_mag_8': np.float64(0.0), 'ph_7_mag_8': np.float64(0.0), 'ph_8_mag_8': np.float64(0.0), 'ph_9_mag_8': np.float64(0.0), 'ph_10_mag_8': np.float64(0.0), 'ph_11_mag_8': np.float64(0.0), 'ph_12_mag_8': np.float64(0.0), 'ph_13_mag_8': np.float64(0.018956750994224666), 'ph_14_mag_8': np.float64(1.0994915576650304), 'ph_15_mag_8': np.float64(0.47391877485561673), 'ph_16_mag_8': np.float64(0.09478375497112333), 'ph_17_mag_8': np.float64(0.018956750994224655), 'ph_0_mag_9': np.float64(0.018956750994224676), 'ph_1_mag_9': np.float64(0.0), 'ph_2_mag_9': np.float64(0.0), 'ph_3_mag_9': np.float64(0.0), 'ph_4_mag_9': np.float64(0.0), 'ph_5_mag_9': np.float64(0.0), 'ph_6_mag_9': np.float64(0.0), 'ph_7_mag_9': np.float64(0.018956750994224666), 'ph_8_mag_9': np.float64(0.8151402927516604), 'ph_9_mag_9': np.float64(0.22748101193069598), 'ph_10_mag_9': np.float64(0.03791350198844933), 'ph_11_mag_9': np.float64(0.0), 'ph_12_mag_9': np.float64(0.0), 'ph_13_mag_9': np.float64(0.0), 'ph_14_mag_9': np.float64(0.0), 'ph_15_mag_9': np.float64(0.0), 'ph_16_mag_9': np.float64(0.0), 'ph_17_mag_9': np.float64(0.0), 'ph_0_mag_10': np.float64(0.018956750994224666), 'ph_1_mag_10': np.float64(0.018956750994224666), 'ph_2_mag_10': np.float64(0.9667943007054577), 'ph_3_mag_10': np.float64(0.170610758948022), 'ph_4_mag_10': np.float64(0.018956750994224666), 'ph_5_mag_10': np.float64(0.0), 'ph_6_mag_10': np.float64(0.0), 'ph_7_mag_10': np.float64(0.0), 'ph_8_mag_10': np.float64(0.0), 'ph_9_mag_10': np.float64(0.0), 'ph_10_mag_10': np.float64(0.0), 'ph_11_mag_10': np.float64(0.0), 'ph_12_mag_10': np.float64(0.0), 'ph_13_mag_10': np.float64(0.05687025298267399), 'ph_14_mag_10': np.float64(1.3838428225784), 'ph_15_mag_10': np.float64(0.2653945139191453), 'ph_16_mag_10': np.float64(0.0), 'ph_17_mag_10': np.float64(0.0), 'ph_0_mag_11': np.float64(0.0), 'ph_1_mag_11': np.float64(0.0), 'ph_2_mag_11': np.float64(0.0), 'ph_3_mag_11': np.float64(0.0), 'ph_4_mag_11': np.float64(0.0), 'ph_5_mag_11': np.float64(0.0), 'ph_6_mag_11': np.float64(0.018956750994224666), 'ph_7_mag_11': np.float64(0.0), 'ph_8_mag_11': np.float64(1.0805348066708056), 'ph_9_mag_11': np.float64(0.15165400795379733), 'ph_10_mag_11': np.float64(0.0), 'ph_11_mag_11': np.float64(0.0), 'ph_12_mag_11': np.float64(0.0), 'ph_13_mag_11': np.float64(0.0), 'ph_14_mag_11': np.float64(0.0), 'ph_15_mag_11': np.float64(0.0), 'ph_16_mag_11': np.float64(0.0), 'ph_17_mag_11': np.float64(0.0)},
        {'ph_0_mag_0': np.float64(0.018909841069615834), 'ph_1_mag_0': np.float64(0.018909841069615834), 'ph_2_mag_0': np.float64(1.0211314177592548), 'ph_3_mag_0': np.float64(0.24582793390500587), 'ph_4_mag_0': np.float64(0.0), 'ph_5_mag_0': np.float64(0.0), 'ph_6_mag_0': np.float64(0.0), 'ph_7_mag_0': np.float64(0.0), 'ph_8_mag_0': np.float64(0.0), 'ph_9_mag_0': np.float64(0.0), 'ph_10_mag_0': np.float64(0.0), 'ph_11_mag_0': np.float64(0.0), 'ph_12_mag_0': np.float64(0.0), 'ph_13_mag_0': np.float64(0.03781968213923167), 'ph_14_mag_0': np.float64(1.2480495105946448), 'ph_15_mag_0': np.float64(0.15127872855692667), 'ph_16_mag_0': np.float64(0.03781968213923167), 'ph_17_mag_0': np.float64(0.0), 'ph_0_mag_1': np.float64(0.0), 'ph_1_mag_1': np.float64(0.0), 'ph_2_mag_1': np.float64(0.0), 'ph_3_mag_1': np.float64(0.0), 'ph_4_mag_1': np.float64(0.0), 'ph_5_mag_1': np.float64(0.0), 'ph_6_mag_1': np.float64(0.018909841069615838), 'ph_7_mag_1': np.float64(0.018909841069615838), 'ph_8_mag_1': np.float64(0.9833117356200233), 'ph_9_mag_1': np.float64(0.09454920534807919), 'ph_10_mag_1': np.float64(0.0), 'ph_11_mag_1': np.float64(0.0), 'ph_12_mag_1': np.float64(0.0), 'ph_13_mag_1': np.float64(0.0), 'ph_14_mag_1': np.float64(0.0), 'ph_15_mag_1': np.float64(0.0), 'ph_16_mag_1': np.float64(0.0), 'ph_17_mag_1': np.float64(0.0), 'ph_0_mag_2': np.float64(0.03781968213923167), 'ph_1_mag_2': np.float64(0.0), 'ph_2_mag_2': np.float64(1.1345904641769495), 'ph_3_mag_2': np.float64(0.13236888748731082), 'ph_4_mag_2': np.float64(0.0), 'ph_5_mag_2': np.float64(0.0), 'ph_6_mag_2': np.float64(0.0), 'ph_7_mag_2': np.float64(0.0), 'ph_8_mag_2': np.float64(0.0), 'ph_9_mag_2': np.float64(0.0), 'ph_10_mag_2': np.float64(0.0), 'ph_11_mag_2': np.float64(0.0), 'ph_12_mag_2': np.float64(0.0), 'ph_13_mag_2': np.float64(0.0), 'ph_14_mag_2': np.float64(1.2480495105946448), 'ph_15_mag_2': np.float64(0.09454920534807916), 'ph_16_mag_2': np.float64(0.0), 'ph_17_mag_2': np.float64(0.0), 'ph_0_mag_3': np.float64(0.0), 'ph_1_mag_3': np.float64(0.0), 'ph_2_mag_3': np.float64(0.0), 'ph_3_mag_3': np.float64(0.0), 'ph_4_mag_3': np.float64(0.0), 'ph_5_mag_3': np.float64(0.0), 'ph_6_mag_3': np.float64(0.018909841069615838), 'ph_7_mag_3': np.float64(0.018909841069615838), 'ph_8_mag_3': np.float64(1.0589510998984868), 'ph_9_mag_3': np.float64(0.11345904641769507), 'ph_10_mag_3': np.float64(0.0), 'ph_11_mag_3': np.float64(0.0), 'ph_12_mag_3': np.float64(0.0), 'ph_13_mag_3': np.float64(0.0), 'ph_14_mag_3': np.float64(0.0), 'ph_15_mag_3': np.float64(0.0), 'ph_16_mag_3': np.float64(0.0), 'ph_17_mag_3': np.float64(0.0), 'ph_0_mag_4': np.float64(0.0), 'ph_1_mag_4': np.float64(0.018909841069615824), 'ph_2_mag_4': np.float64(0.9833117356200226), 'ph_3_mag_4': np.float64(0.18909841069615824), 'ph_4_mag_4': np.float64(0.018909841069615824), 'ph_5_mag_4': np.float64(0.0), 'ph_6_mag_4': np.float64(0.0), 'ph_7_mag_4': np.float64(0.0), 'ph_8_mag_4': np.float64(0.0), 'ph_9_mag_4': np.float64(0.0), 'ph_10_mag_4': np.float64(0.0), 'ph_11_mag_4': np.float64(0.0), 'ph_12_mag_4': np.float64(0.0), 'ph_13_mag_4': np.float64(0.018909841069615838), 'ph_14_mag_4': np.float64(1.3047790338034928), 'ph_15_mag_4': np.float64(0.1323688874873109), 'ph_16_mag_4': np.float64(0.0), 'ph_17_mag_4': np.float64(0.0), 'ph_0_mag_5': np.float64(0.0), 'ph_1_mag_5': np.float64(0.0), 'ph_2_mag_5': np.float64(0.01890984106961583), 'ph_3_mag_5': np.float64(0.0), 'ph_4_mag_5': np.float64(0.0), 'ph_5_mag_5': np.float64(0.0), 'ph_6_mag_5': np.float64(0.0), 'ph_7_mag_5': np.float64(0.018909841069615838), 'ph_8_mag_5': np.float64(1.0022215766896394), 'ph_9_mag_5': np.float64(0.1323688874873109), 'ph_10_mag_5': np.float64(0.01890984106961584), 'ph_11_mag_5': np.float64(0.0), 'ph_12_mag_5': np.float64(0.0), 'ph_13_mag_5': np.float64(0.0), 'ph_14_mag_5': np.float64(0.0), 'ph_15_mag_5': np.float64(0.0), 'ph_16_mag_5': np.float64(0.0), 'ph_17_mag_5': np.float64(0.0), 'ph_0_mag_6': np.float64(0.0), 'ph_1_mag_6': np.float64(0.03781968213923165), 'ph_2_mag_6': np.float64(0.8509428481327118), 'ph_3_mag_6': np.float64(0.47274602674039556), 'ph_4_mag_6': np.float64(0.0), 'ph_5_mag_6': np.float64(0.018909841069615813), 'ph_6_mag_6': np.float64(0.0), 'ph_7_mag_6': np.float64(0.0), 'ph_8_mag_6': np.float64(0.0), 'ph_9_mag_6': np.float64(0.0), 'ph_10_mag_6': np.float64(0.0), 'ph_11_mag_6': np.float64(0.0), 'ph_12_mag_6': np.float64(0.0), 'ph_13_mag_6': np.float64(0.0), 'ph_14_mag_6': np.float64(0.6240247552973226), 'ph_15_mag_6': np.float64(0.5672952320884753), 'ph_16_mag_6': np.float64(0.05672952320884753), 'ph_17_mag_6': np.float64(0.0), 'ph_0_mag_7': np.float64(0.0), 'ph_1_mag_7': np.float64(0.0), 'ph_2_mag_7': np.float64(0.0), 'ph_3_mag_7': np.float64(0.0), 'ph_4_mag_7': np.float64(0.0), 'ph_5_mag_7': np.float64(0.0), 'ph_6_mag_7': np.float64(0.0), 'ph_7_mag_7': np.float64(0.018909841069615838), 'ph_8_mag_7': np.float64(0.09454920534807919), 'ph_9_mag_7': np.float64(0.7563936427846336), 'ph_10_mag_7': np.float64(0.4160165035315485), 'ph_11_mag_7': np.float64(0.0), 'ph_12_mag_7': np.float64(0.0), 'ph_13_mag_7': np.float64(0.0), 'ph_14_mag_7': np.float64(0.0), 'ph_15_mag_7': np.float64(0.0), 'ph_16_mag_7': np.float64(0.0), 'ph_17_mag_7': np.float64(0.0), 'ph_0_mag_8': np.float64(0.0), 'ph_1_mag_8': np.float64(0.018909841069615838), 'ph_2_mag_8': np.float64(0.018909841069615838), 'ph_3_mag_8': np.float64(0.34037713925308516), 'ph_4_mag_8': np.float64(0.9833117356200238), 'ph_5_mag_8': np.float64(0.0567295232088475), 'ph_6_mag_8': np.float64(0.0), 'ph_7_mag_8': np.float64(0.0), 'ph_8_mag_8': np.float64(0.0), 'ph_9_mag_8': np.float64(0.0), 'ph_10_mag_8': np.float64(0.0), 'ph_11_mag_8': np.float64(0.0), 'ph_12_mag_8': np.float64(0.0), 'ph_13_mag_8': np.float64(0.018909841069615803), 'ph_14_mag_8': np.float64(0.0), 'ph_15_mag_8': np.float64(0.3403771392530845), 'ph_16_mag_8': np.float64(0.869852689202327), 'ph_17_mag_8': np.float64(0.11345904641769476), 'ph_0_mag_9': np.float64(0.0), 'ph_1_mag_9': np.float64(0.0), 'ph_2_mag_9': np.float64(0.0), 'ph_3_mag_9': np.float64(0.0), 'ph_4_mag_9': np.float64(0.0), 'ph_5_mag_9': np.float64(0.03781968213923154), 'ph_6_mag_9': np.float64(0.0), 'ph_7_mag_9': np.float64(0.018909841069615838), 'ph_8_mag_9': np.float64(0.11345904641769501), 'ph_9_mag_9': np.float64(0.718573960645402), 'ph_10_mag_9': np.float64(0.3781968213923168), 'ph_11_mag_9': np.float64(0.03781968213923166), 'ph_12_mag_9': np.float64(0.0), 'ph_13_mag_9': np.float64(0.0), 'ph_14_mag_9': np.float64(0.0), 'ph_15_mag_9': np.float64(0.0), 'ph_16_mag_9': np.float64(0.0), 'ph_17_mag_9': np.float64(0.0), 'ph_0_mag_10': np.float64(0.0), 'ph_1_mag_10': np.float64(0.0), 'ph_2_mag_10': np.float64(0.5105657088796276), 'ph_3_mag_10': np.float64(0.7942133249238654), 'ph_4_mag_10': np.float64(0.03781968213923168), 'ph_5_mag_10': np.float64(0.0), 'ph_6_mag_10': np.float64(0.0), 'ph_7_mag_10': np.float64(0.0), 'ph_8_mag_10': np.float64(0.0), 'ph_9_mag_10': np.float64(0.0), 'ph_10_mag_10': np.float64(0.0), 'ph_11_mag_10': np.float64(0.0), 'ph_12_mag_10': np.float64(0.0), 'ph_13_mag_10': np.float64(0.0), 'ph_14_mag_10': np.float64(0.8509428481327127), 'ph_15_mag_10': np.float64(0.359286980322701), 'ph_16_mag_10': np.float64(0.01890984106961584), 'ph_17_mag_10': np.float64(0.0), 'ph_0_mag_11': np.float64(0.0), 'ph_1_mag_11': np.float64(0.0), 'ph_2_mag_11': np.float64(0.0), 'ph_3_mag_11': np.float64(0.0), 'ph_4_mag_11': np.float64(0.0), 'ph_5_mag_11': np.float64(0.0), 'ph_6_mag_11': np.float64(0.0), 'ph_7_mag_11': np.float64(0.037819682139231675), 'ph_8_mag_11': np.float64(0.8509428481327127), 'ph_9_mag_11': np.float64(0.2647377749746218), 'ph_10_mag_11': np.float64(0.01890984106961584), 'ph_11_mag_11': np.float64(0.0), 'ph_12_mag_11': np.float64(0.018909841069615855), 'ph_13_mag_11': np.float64(0.0), 'ph_14_mag_11': np.float64(0.0), 'ph_15_mag_11': np.float64(0.0), 'ph_16_mag_11': np.float64(0.0), 'ph_17_mag_11': np.float64(0.0)},
        {'ph_0_mag_0': np.float64(0.01889370584530533), 'ph_1_mag_0': np.float64(0.0), 'ph_2_mag_0': np.float64(1.0769412331824035), 'ph_3_mag_0': np.float64(0.15114964676244266), 'ph_4_mag_0': np.float64(0.0), 'ph_5_mag_0': np.float64(0.0), 'ph_6_mag_0': np.float64(0.0), 'ph_7_mag_0': np.float64(0.0), 'ph_8_mag_0': np.float64(0.0), 'ph_9_mag_0': np.float64(0.0), 'ph_10_mag_0': np.float64(0.0), 'ph_11_mag_0': np.float64(0.0), 'ph_12_mag_0': np.float64(0.01889370584530533), 'ph_13_mag_0': np.float64(0.01889370584530533), 'ph_14_mag_0': np.float64(1.265878291635457), 'ph_15_mag_0': np.float64(0.09446852922652665), 'ph_16_mag_0': np.float64(0.0), 'ph_17_mag_0': np.float64(0.0), 'ph_0_mag_1': np.float64(0.0), 'ph_1_mag_1': np.float64(0.0), 'ph_2_mag_1': np.float64(0.0), 'ph_3_mag_1': np.float64(0.0), 'ph_4_mag_1': np.float64(0.0), 'ph_5_mag_1': np.float64(0.0), 'ph_6_mag_1': np.float64(0.018893705845305322), 'ph_7_mag_1': np.float64(0.018893705845305322), 'ph_8_mag_1': np.float64(1.228090879944846), 'ph_9_mag_1': np.float64(0.09446852922652664), 'ph_10_mag_1': np.float64(0.0), 'ph_11_mag_1': np.float64(0.0), 'ph_12_mag_1': np.float64(0.0), 'ph_13_mag_1': np.float64(0.0), 'ph_14_mag_1': np.float64(0.0), 'ph_15_mag_1': np.float64(0.0), 'ph_16_mag_1': np.float64(0.0), 'ph_17_mag_1': np.float64(0.0), 'ph_0_mag_2': np.float64(0.018893705845305333), 'ph_1_mag_2': np.float64(0.0), 'ph_2_mag_2': np.float64(0.982472703955877), 'ph_3_mag_2': np.float64(0.170043352607748), 'ph_4_mag_2': np.float64(0.0), 'ph_5_mag_2': np.float64(0.0), 'ph_6_mag_2': np.float64(0.0), 'ph_7_mag_2': np.float64(0.0), 'ph_8_mag_2': np.float64(0.0), 'ph_9_mag_2': np.float64(0.0), 'ph_10_mag_2': np.float64(0.0), 'ph_11_mag_2': np.float64(0.0), 'ph_12_mag_2': np.float64(0.0), 'ph_13_mag_2': np.float64(0.018893705845305322), 'ph_14_mag_2': np.float64(1.3414531150166777), 'ph_15_mag_2': np.float64(0.11336223507183193), 'ph_16_mag_2': np.float64(0.0), 'ph_17_mag_2': np.float64(0.0), 'ph_0_mag_3': np.float64(0.0), 'ph_1_mag_3': np.float64(0.0), 'ph_2_mag_3': np.float64(0.0), 'ph_3_mag_3': np.float64(0.0), 'ph_4_mag_3': np.float64(0.0), 'ph_5_mag_3': np.float64(0.0), 'ph_6_mag_3': np.float64(0.0), 'ph_7_mag_3': np.float64(0.0), 'ph_8_mag_3': np.float64(0.8502167630387397), 'ph_9_mag_3': np.float64(0.18893705845305334), 'ph_10_mag_3': np.float64(0.018893705845305336), 'ph_11_mag_3': np.float64(0.0), 'ph_12_mag_3': np.float64(0.0), 'ph_13_mag_3': np.float64(0.0), 'ph_14_mag_3': np.float64(0.018893705845305322), 'ph_15_mag_3': np.float64(0.0), 'ph_16_mag_3': np.float64(0.0), 'ph_17_mag_3': np.float64(0.0), 'ph_0_mag_4': np.float64(0.0), 'ph_1_mag_4': np.float64(0.0), 'ph_2_mag_4': np.float64(1.0769412331824038), 'ph_3_mag_4': np.float64(0.226724470143664), 'ph_4_mag_4': np.float64(0.018893705845305336), 'ph_5_mag_4': np.float64(0.0), 'ph_6_mag_4': np.float64(0.0), 'ph_7_mag_4': np.float64(0.0), 'ph_8_mag_4': np.float64(0.0), 'ph_9_mag_4': np.float64(0.0), 'ph_10_mag_4': np.float64(0.0), 'ph_11_mag_4': np.float64(0.0), 'ph_12_mag_4': np.float64(0.0), 'ph_13_mag_4': np.float64(0.037787411690610666), 'ph_14_mag_4': np.float64(0.982472703955877), 'ph_15_mag_4': np.float64(0.226724470143664), 'ph_16_mag_4': np.float64(0.0), 'ph_17_mag_4': np.float64(0.0), 'ph_0_mag_5': np.float64(0.0), 'ph_1_mag_5': np.float64(0.0), 'ph_2_mag_5': np.float64(0.0), 'ph_3_mag_5': np.float64(0.0), 'ph_4_mag_5': np.float64(0.0), 'ph_5_mag_5': np.float64(0.0), 'ph_6_mag_5': np.float64(0.0), 'ph_7_mag_5': np.float64(0.037787411690610666), 'ph_8_mag_5': np.float64(0.6801734104309918), 'ph_9_mag_5': np.float64(0.56681117535916), 'ph_10_mag_5': np.float64(0.056681117535916), 'ph_11_mag_5': np.float64(0.018893705845305322), 'ph_12_mag_5': np.float64(0.0), 'ph_13_mag_5': np.float64(0.0), 'ph_14_mag_5': np.float64(0.0), 'ph_15_mag_5': np.float64(0.0), 'ph_16_mag_5': np.float64(0.0), 'ph_17_mag_5': np.float64(0.0), 'ph_0_mag_6': np.float64(0.0), 'ph_1_mag_6': np.float64(0.03778741169061063), 'ph_2_mag_6': np.float64(0.037787411690610624), 'ph_3_mag_6': np.float64(0.8691104688840444), 'ph_4_mag_6': np.float64(0.2267244701436638), 'ph_5_mag_6': np.float64(0.018893705845305305), 'ph_6_mag_6': np.float64(0.0), 'ph_7_mag_6': np.float64(0.0), 'ph_8_mag_6': np.float64(0.0), 'ph_9_mag_6': np.float64(0.0), 'ph_10_mag_6': np.float64(0.0), 'ph_11_mag_6': np.float64(0.0), 'ph_12_mag_6': np.float64(0.0), 'ph_13_mag_6': np.float64(0.018893705845305354), 'ph_14_mag_6': np.float64(0.0), 'ph_15_mag_6': np.float64(0.37787411690610706), 'ph_16_mag_6': np.float64(0.8124293513481302), 'ph_17_mag_6': np.float64(0.11336223507183206), 'ph_0_mag_7': np.float64(0.0), 'ph_1_mag_7': np.float64(0.0), 'ph_2_mag_7': np.float64(0.0), 'ph_3_mag_7': np.float64(0.0), 'ph_4_mag_7': np.float64(0.0), 'ph_5_mag_7': np.float64(0.0), 'ph_6_mag_7': np.float64(0.0), 'ph_7_mag_7': np.float64(0.0), 'ph_8_mag_7': np.float64(0.018893705845305312), 'ph_9_mag_7': np.float64(0.2645118818342744), 'ph_10_mag_7': np.float64(1.0013664098011816), 'ph_11_mag_7': np.float64(0.03778741169061061), 'ph_12_mag_7': np.float64(0.0), 'ph_13_mag_7': np.float64(0.0), 'ph_14_mag_7': np.float64(0.0), 'ph_15_mag_7': np.float64(0.0), 'ph_16_mag_7': np.float64(0.0), 'ph_17_mag_7': np.float64(0.03778741169061057), 'ph_0_mag_8': np.float64(0.0), 'ph_1_mag_8': np.float64(0.0), 'ph_2_mag_8': np.float64(0.0755748233812214), 'ph_3_mag_8': np.float64(0.7935356455028247), 'ph_4_mag_8': np.float64(0.6045985870497714), 'ph_5_mag_8': np.float64(0.018893705845305343), 'ph_6_mag_8': np.float64(0.0), 'ph_7_mag_8': np.float64(0.0), 'ph_8_mag_8': np.float64(0.0), 'ph_9_mag_8': np.float64(0.0), 'ph_10_mag_8': np.float64(0.0), 'ph_11_mag_8': np.float64(0.0), 'ph_12_mag_8': np.float64(0.0), 'ph_13_mag_8': np.float64(0.018893705845305316), 'ph_14_mag_8': np.float64(0.4912363519779381), 'ph_15_mag_8': np.float64(0.6612797045856861), 'ph_16_mag_8': np.float64(0.05668111753591595), 'ph_17_mag_8': np.float64(0.0), 'ph_0_mag_9': np.float64(0.0), 'ph_1_mag_9': np.float64(0.0), 'ph_2_mag_9': np.float64(0.0), 'ph_3_mag_9': np.float64(0.0), 'ph_4_mag_9': np.float64(0.0), 'ph_5_mag_9': np.float64(0.0), 'ph_6_mag_9': np.float64(0.0), 'ph_7_mag_9': np.float64(0.0), 'ph_8_mag_9': np.float64(0.7557482338122139), 'ph_9_mag_9': np.float64(0.39676782275141237), 'ph_10_mag_9': np.float64(0.0), 'ph_11_mag_9': np.float64(0.018893705845305343), 'ph_12_mag_9': np.float64(0.0), 'ph_13_mag_9': np.float64(0.0), 'ph_14_mag_9': np.float64(0.0), 'ph_15_mag_9': np.float64(0.0), 'ph_16_mag_9': np.float64(0.0), 'ph_17_mag_9': np.float64(0.0), 'ph_0_mag_10': np.float64(0.0), 'ph_1_mag_10': np.float64(0.018893705845305316), 'ph_2_mag_10': np.float64(0.8691104688840443), 'ph_3_mag_10': np.float64(0.2645118818342744), 'ph_4_mag_10': np.float64(0.01889370584530532), 'ph_5_mag_10': np.float64(0.0), 'ph_6_mag_10': np.float64(0.018893705845305326), 'ph_7_mag_10': np.float64(0.0), 'ph_8_mag_10': np.float64(0.0), 'ph_9_mag_10': np.float64(0.0), 'ph_10_mag_10': np.float64(0.0), 'ph_11_mag_10': np.float64(0.0), 'ph_12_mag_10': np.float64(0.0), 'ph_13_mag_10': np.float64(0.018893705845305316), 'ph_14_mag_10': np.float64(1.0202601156464868), 'ph_15_mag_10': np.float64(0.2267244701436638), 'ph_16_mag_10': np.float64(0.0), 'ph_17_mag_10': np.float64(0.0), 'ph_0_mag_11': np.float64(0.0), 'ph_1_mag_11': np.float64(0.0), 'ph_2_mag_11': np.float64(0.0), 'ph_3_mag_11': np.float64(0.0), 'ph_4_mag_11': np.float64(0.0), 'ph_5_mag_11': np.float64(0.0), 'ph_6_mag_11': np.float64(0.018893705845305354), 'ph_7_mag_11': np.float64(0.05668111753591605), 'ph_8_mag_11': np.float64(1.133622350718321), 'ph_9_mag_11': np.float64(0.2078307642983589), 'ph_10_mag_11': np.float64(0.037787411690610714), 'ph_11_mag_11': np.float64(0.0), 'ph_12_mag_11': np.float64(0.0), 'ph_13_mag_11': np.float64(0.0), 'ph_14_mag_11': np.float64(0.0), 'ph_15_mag_11': np.float64(0.0), 'ph_16_mag_11': np.float64(0.0), 'ph_17_mag_11': np.float64(0.0)}],
       dtype=object),
 'MinTimeInterval': np.float64(0.004420999997819308),
 'Freq1_harmonics_rel_phase_2': np.float64(-0.5009668344949287),
 'CAR_tau': np.float64(0.6659087712990382),
 'StructureFunction_index_31': np.float64(3.2034387336041847),
 'Freq1_harmonics_amplitude_0': np.float64(0.12696337592357881),
 'Freq3_harmonics_rel_phase_0': np.float64(0.0),
 'Eta': np.float64(1.5775802565843957),
 'Q31': np.float64(0.1484999999999994),
 'Freq3_harmonics_rel_phase_1': np.float64(0.40138477025767005),
 'SlottedALength': np.int64(1),
 'PercentDiffPercentile': np.float64(-0.0774069104327407),
 'Freq3_harmonics_rel_phase_3': np.float64(0.8257309205588665),
 'OtsuStdUpper': np.float64(0.17977327317568),
 'Roms': np.float64(0.016818524986223653),
 'TimeStd': np.float64(689.4754574135209),
 'StructureFunction_index_21': np.float64(2.0783277843715107),
 'WeightedBeyondNStd': 0.1951417004048583,
 'PairSlopeTrend': 0.03333333333333333,
 'LinearFit_ReducedChi2': np.float64(0.0032472289108831766),
 'LinearFit_Sigma': np.float64(0.0004705712779750258),
 'Freq3_harmonics_rel_phase_2': np.float64(2.5050780381711233),
 'Psi_CS': array([0.15459217, 0.16973083, 0.17454871]),
 'CAR_sigma': np.float64(0.21573685689190292),
 'Std': np.float64(0.16903765739517448),
 'Rcs': np.float64(0.03918118271292883),
 'Freq1_harmonics_rel_phase_0': np.float64(0.0),
 'ReducedChi2': np.float64(0.007925037063788627),
 'Mean': np.float64(-5.912206477732794),
 'LinearTrend_ReducedChi2': np.float64(0.16906666107809054),
 'MeanVariance': np.float64(-0.028591298025842433),
 'EtaE': np.float64(778.3644813251216),
 'Freq1_harmonics_rel_phase_1': np.float64(-0.33378025144733847),
 'Duration': np.float64(2722.8477779999957),
 'Amplitude': np.float64(1.286),
 'CAR_mean': np.float64(-8.87840306743431),
 'LinearTrend_Sigma': np.float64(6.980420484612122e-06),
 'OtsuStdLower': np.float64(0.07832807317215919),
 'StetsonK': np.float64(0.1812797954756337),
 'Freq2_harmonics_rel_phase_0': np.float64(0.0),
 'PercentAmplitude': np.float64(1.9589999999999996),
 'WeightedMean': np.float64(-4.301075078362665)}

Accessing results by feature

You can also access the values for a specific feature across all processed light curves by using attribute-like access. This is a convenient way to retrieve a single feature’s results for your entire dataset.

For example, to get the Mean value for every light curve in the batch:

[26]:
features.Mean
[26]:
array([-5.91220648, -5.57750693])

Converting to a pandas.DataFrame

For seamless integration with the broader Python data science ecosystem, the Features object can be effortlessly converted into a pandas.DataFrame. As seen in previous example, the as_frame() method transforms the results into a tabular format where each row corresponds to a signle light-curve and each column represents an extracted feature.

[27]:
df = features.as_frame()
df
[27]:
Features Beyond1Std InterPercentileRange_25 PeriodLS_0 PeriodLS_1 PeriodLS_2 Cusum OtsuMeanDiff SmallKurtosis Freq2_harmonics_amplitude_2 LinearFit_Slope ... Freq1_harmonics_rel_phase_1 Duration Amplitude CAR_mean LinearTrend_Sigma OtsuStdLower StetsonK Freq2_harmonics_rel_phase_0 PercentAmplitude WeightedMean
Light Curve
0 0.192713 0.14875 0.936878 0.937007 0.936942 0.039165 0.321164 24.601220 0.042575 -0.001131 ... -0.33378 2722.847778 1.2860 -8.878403 0.000007 0.078328 0.181280 0.0 1.959 -4.301075
1 0.170360 0.13100 0.937034 0.936905 0.936969 0.032167 0.360102 37.263669 0.032373 0.000114 ... 0.32875 2717.867118 1.5325 -5.484642 0.000010 0.107274 0.227653 0.0 2.255 -3.471353

2 rows × 1296 columns

8. Example: Plotting the phased light-curve

After extracting features, you can use them for further analysis.

For example, for periodic light-curves, we are able to transform the photometric time series into a single light-curve in which each period is mapped onto the same time axis as follows:

\[t'=\{\frac{t - t_0}{T}\}\]

where \(T\) is the period, \(t_0\) is an arbitrary starting point and the \(\{\}\) symbols represent the non-integer part of the fraction.

This process produces a folded light-curve on an x-axis of folded time that ranges from 0 to 1. The corresponding folded light-curve of the previous example is shown next:

[28]:
import feets

fs = feets.FeatureSpace(only=["PeriodLS"])
features = fs.extract(**lc)
features.as_frame()

[28]:
Features PeriodLS_0 PeriodLS_1 PeriodLS_2
Light Curve
0 0.936878 0.937007 0.936942
[29]:
import numpy as np
import matplotlib.pyplot as plt

# The PeriodLS feature consists of multiple periods.
# We'll take the first (most significant) period, multiplied by 2 to better
# visualize the phased light curve.
T = 2 * features[0]["PeriodLS"][0]
phased_time = np.mod(lc["time"], T) / T

plt.plot(phased_time, lc["magnitude"], "*")
plt.xlabel("Phase")
plt.ylabel("Magnitude")
plt.gca().invert_yaxis()
_images/tutorial_55_0.png