---
title: "Introduction to rfastlowess"
pagetitle: "Introduction to rfastlowess"
author: "Amir Valizadeh"
date: "`r Sys.Date()`"
output: BiocStyle::html_document
vignette: >
  %\VignetteIndexEntry{Introduction to rfastlowess}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>",
    fig.width = 7,
    fig.height = 5
)
```

```{r srr-tags, eval = FALSE, echo = FALSE}
#' @srrstats {G1.0} Package introduction with academic context.
#' @srrstats {G1.4} Examples use roxygen2-documented functions.
#' @srrstats {RE1.2} Documents expected numeric vector input format.
#' @srrstats {RE1.4} Documents LOWESS assumptions and use cases.
#' @srrstats {RE4.17} Demonstrates print() method for model objects.
#' @srrstats {RE6.0, RE6.2} Demonstrates plot() method with CI visualization.
```

## Overview

`rfastlowess` is a high-performance R package for LOWESS (Locally Weighted
Scatterplot Smoothing) built on a Rust backend.

**Full documentation**: <https://lowess.readthedocs.io/>

## Installation

```{r installation, eval=FALSE}
# From R-universe (pre-built binaries, no Rust required)
install.packages("rfastlowess", repos = "https://thisisamirv.r-universe.dev")
```

## Quick Start

### Basic Smoothing

The package uses S3 classes to provide a user-friendly interface.
Models and results can be inspected using `print()`.
Results can also be visualized using `plot()`.

```{r basic_example}
library(rfastlowess)

# Generate example data
set.seed(42)
x <- seq(0, 10, length.out = 100)
y <- sin(x) + rnorm(100, sd = 0.3)

# Initialize model
model <- Lowess(fraction = 0.3)
print(model)

# Fit model
result <- model$fit(x, y)
print(result)

# Quick visualization using the S3 plot method
plot(result, main = "Auto-plot of LowessResult")

# For custom plotting, access components directly
plot(x, y, pch = 16, col = "gray", main = "Manual Overlay")
lines(result$x, result$y, col = "red", lwd = 2)
```

### Robust Smoothing with Intervals

```{r robust_example}
# Add outliers
y_outliers <- y
y_outliers[sample(1:100, 10)] <- y_outliers[sample(1:100, 10)] + 5

# Robust smoothing with confidence intervals
result_robust <- Lowess(
    fraction = 0.3,
    iterations = 5,
    confidence_intervals = 0.95
)$fit(x, y_outliers)

# Plot
plot(x, y_outliers, pch = 16, col = "gray", main = "Robust LOWESS")
lines(result_robust$x, result_robust$y, col = "red", lwd = 2)
lines(result_robust$x, result_robust$confidence_lower, col = "blue", lty = 2)
lines(result_robust$x, result_robust$confidence_upper, col = "blue", lty = 2)
```

## Main Classes

| Class              | Use Case                             |
|--------------------|--------------------------------------|
| `Lowess`           | Primary interface - batch processing |
| `StreamingLowess`  | Large datasets (>100K points)        |
| `OnlineLowess`     | Real-time data streams               |

## Learn More

For comprehensive documentation including:

- Parameter selection guides
- Streaming and online processing tutorials
- Genomic data examples
- Performance benchmarks

Visit: **<https://lowess.readthedocs.io/>**

## Session Info

```{r session_info}
sessionInfo()
```
