Skip to content

Commit 1f806d0

Browse files
committed
Update readme
1 parent 7a51748 commit 1f806d0

1 file changed

Lines changed: 35 additions & 19 deletions

File tree

light-curve/README.md

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,26 @@ help(lc.BazinFit)
7777
### Available features
7878

7979
See the complete list of available feature extractors and their documentation in the
80-
[`light-curve-feature` Rust crate docs](https://docs.rs/light-curve-feature/latest/light_curve_feature/features/index.html).
80+
[
81+
`light-curve-feature` Rust crate docs](https://docs.rs/light-curve-feature/latest/light_curve_feature/features/index.html).
8182
Italic names are experimental features.
8283
While we usually say "magnitude" and use "m" as the time-series value, some features are designed for
8384
flux light curves.
84-
The last column indicates whether a feature should be used with flux light curves only, magnitude light
85-
curves only, or either.
85+
86+
The Flux/magnitude column indicates whether a feature should be used with flux light curves only,
87+
magnitude light curves only, or either.
88+
89+
The `transform=True` column shows the default transformation applied to the output when `transform=True`
90+
is passed to the extractor constructor (default is `transform=None`, which does not apply any transformations).
91+
Transformations are monotonic functions intended to reduce dynamic range and improve the suitability of
92+
raw feature values for machine learning.
93+
You can also select a transformation by name string (e.g. `transform="lg"`) for supported features;
94+
available names are `"identity"` (no-op), `"lg"` (base-10 logarithm), `"arcsinh"` (inverse hyperbolic sine),
95+
`"clipped_lg"` (base-10 logarithm with values below the minimum positive float clipped to a floor),
96+
`"ln1p"` (natural logarithm of 1 + x), and `"sqrt"`.
97+
For parametric fit features (`BazinFit`, `LinexpFit`, `VillarFit`), `transform=True` applies a
98+
feature-specific transformation described under [Parametric fit features](#parametric-fit-features).
99+
Features marked "N/A" do not implement transformation.
86100

87101
<table>
88102
<tr>
@@ -91,7 +105,7 @@ curves only, or either.
91105
<th>Min data points</th>
92106
<th>Features number</th>
93107
<th>Flux/magnitude</th>
94-
<th>Default transform</th>
108+
<th>`transform=True`</th>
95109
</tr>
96110
<tr>
97111
<td>Amplitude</td>
@@ -258,7 +272,7 @@ curves only, or either.
258272
<td align="center">2</td>
259273
<td align="center">1</td>
260274
<td>Flux or magn</td>
261-
<td>clipped lg</td>
275+
<td>clipped_lg</td>
262276
</tr>
263277

264278
<tr>
@@ -320,7 +334,7 @@ Otsu's method is used to perform automatic thresholding. The algorithm returns a
320334
<td align="center">2</td>
321335
<td align="center">4</td>
322336
<td>Flux or magn</td>
323-
<td>not supported</td>
337+
<td>N/A</td>
324338
</tr>
325339

326340
<tr>
@@ -340,7 +354,7 @@ Otsu's method is used to perform automatic thresholding. The algorithm returns a
340354
<td align="center">1</td>
341355
<td align="center">1</td>
342356
<td>Flux only</td>
343-
<td>clipped lg</td>
357+
<td>clipped_lg</td>
344358
</tr>
345359

346360
<tr>
@@ -370,7 +384,7 @@ Otsu's method is used to perform automatic thresholding. The algorithm returns a
370384
<td align="center">2</td>
371385
<td align="center">1</td>
372386
<td>Flux or magn</td>
373-
<td>$\ln(1+x)$</td>
387+
<td>ln1x</td>
374388
</tr>
375389

376390
<tr>
@@ -474,22 +488,22 @@ they require an explicit `algorithm` argument selecting the optimization method.
474488
The available algorithms depend on the compile-time Cargo features (see
475489
[Build from source](#build-from-source)):
476490

477-
| Algorithm | Requires | Description |
478-
|-----------|----------|-------------|
479-
| `"mcmc"` | always available | MCMC ensemble sampler; robust but slow |
480-
| `"ceres"` | `ceres-source` or `ceres-system` | Ceres trust-region solver; fast, gradient-based |
481-
| `"mcmc-ceres"` | `ceres-source` or `ceres-system` | MCMC exploration followed by Ceres refinement |
482-
| `"lmsder"` | `gsl` | Levenberg-Marquardt via GSL |
483-
| `"mcmc-lmsder"` | `gsl` | MCMC exploration followed by LMSDER refinement |
491+
| Algorithm | Requires | Description |
492+
|-----------------|----------------------------------|-------------------------------------------------|
493+
| `"mcmc"` | always available | MCMC ensemble sampler; robust but slow |
494+
| `"ceres"` | `ceres-source` or `ceres-system` | Ceres trust-region solver; fast, gradient-based |
495+
| `"mcmc-ceres"` | `ceres-source` or `ceres-system` | MCMC exploration followed by Ceres refinement |
496+
| `"lmsder"` | `gsl` | Levenberg-Marquardt via GSL |
497+
| `"mcmc-lmsder"` | `gsl` | MCMC exploration followed by LMSDER refinement |
484498

485499
The hybrid `"mcmc-ceres"` and `"mcmc-lmsder"` algorithms run MCMC first to broadly explore the
486500
parameter space, then hand off to the gradient-based solver for precise convergence. This typically
487501
gives the best balance of robustness and final accuracy.
488502

489503
By default, initial parameter values and bounds are estimated from the data. Override them with the
490504
`init` and `bounds` arguments (supported by MCMC-based algorithms only), each a list of values or
491-
`None`s to keep data-derived defaults for individual parameters. `BazinFit` has 5 parameters, `LinexpFit` has 4, `VillarFit` has 7; run `help()` on the
492-
respective class for the parameter order.
505+
`None`s to keep data-derived defaults for individual parameters. `BazinFit` has 5 parameters, `LinexpFit` has 4,
506+
`VillarFit` has 7; run `help()` on the respective class for the parameter order.
493507

494508
The `ln_prior` argument sets the MCMC prior. It accepts `None` / `"no"` (flat prior, the default),
495509
a named string literal, or a list of `light_curve.ln_prior.LnPrior1D` objects for per-parameter
@@ -498,7 +512,8 @@ distributions (see `help(light_curve.ln_prior)` for the available distribution t
498512
encodes supernova physics constraints; it assumes time values are in days.
499513

500514
Pass `transform=True` to convert the raw fit parameters to a magnitude-like representation: the
501-
amplitude becomes a magnitude, the baseline is normalized by the amplitude, the reference time is
515+
amplitude becomes a magnitude (assuming input flux in janskys), the baseline is normalized by the amplitude, the
516+
reference time is
502517
dropped, and the reduced chi^2 is log-scaled. Run `help(lc.BazinFit)` for the exact definition.
503518

504519
For the experimental multi-band analogue, see [Rainbow Fit](#rainbow-fit) below.
@@ -622,7 +637,8 @@ The package is designed for high throughput. The following techniques help extra
622637
### `sorted` and `check` parameters
623638

624639
The `sorted=True` argument tells the extractor that `t` is already sorted in ascending order, and `check=False`
625-
disables validation of NaN/inf values. The defaults are `sorted=None` (the array will be validated and an error raised if unsorted) and
640+
disables validation of NaN/inf values. The defaults are `sorted=None` (the array will be validated and an error raised
641+
if unsorted) and
626642
`check=True`. Passing invalid inputs without validation can cause incorrect results or crashes.
627643

628644
### Batch processing with `.many()`

0 commit comments

Comments
 (0)