Frequently Asked Questions ========================== What is QSignature? ------------------- QSignature is a model-free framework for classifying dynamical regimes from causal response data. It uses signed and unsigned centroid timescales (τ_s and τ_u) to compute diagnostic ratios R_su and Δ_su. For theoretical background, see :cite:`qsignature2026_isdfs` and :cite:`qsignature2026_theorems`. Does QSignature require model fitting? -------------------------------------- No. QSignature is completely model-free. It computes directly from the time series without any fitting, training, or parametric assumptions. What types of data can QSignature analyze? ------------------------------------------- QSignature works on any oscillatory time series, including: - Climate data (temperature, humidity, pressure) - Quantum systems (coherence decay) - Financial data (market cycles) - Forensic data (network traffic) - Engineering (vibration, control systems) How do I interpret R_su? ------------------------ - R_su < 0 → Strong decay (weakly damped) - 0 < R_su < 1 → Decay (underdamped) - R_su ≈ 1 → Stable (exponential) - R_su > 1 → Growth What is Λ (envelope growth rate)? --------------------------------- Λ is the average logarithmic growth rate of the amplitude envelope. It is phase-invariant and provides independent validation of the trend inferred from R_su. Why is τ_u phase-invariant? --------------------------- τ_u uses absolute values |dR/dt|, so sign cancellations from phase shifts do not affect it. This makes τ_u robust for oscillatory signals where τ_s may become negative. How do I cite QSignature? ------------------------- Please cite the ISDFS 2026 paper and the Research Square preprint. See the :doc:`acknowledgment` page for BibTeX entries. Where can I find examples? -------------------------- See the :doc:`examples` page and the `examples/` folder in the GitHub repository. What if my data is noisy? ------------------------- Use `QSmooth` before computing diagnostics: .. code-block:: python qs = QSignature.QSmooth() R_smooth = qs.savgol(t, R, window_frac=0.1, polyorder=3)