Package: menstrualcycleR 1.1.1

Tory Eisenlohr-Moul

menstrualcycleR: Phase-Aligned Cycle Time Scaling (PACTS) and Menstrual Cycle Analysis

Implements Phase-Aligned Cycle Time Scaling (PACTS) for menstrual cycle data, placing observations from cycles of differing length onto a common continuous timeline that accounts for variability in ovulation timing. Provides cycle time variables anchored on either menses onset or ovulation, summaries of how ovulation was determined in each cycle, and plotting functions for cycle-aligned outcomes. Methods are described in Nagpal et al. (2025) <doi:10.1016/j.psyneuen.2025.107584>.

Authors:Anisha Nagpal [aut], Tory Eisenlohr-Moul [aut, cre]

menstrualcycleR_1.1.1.tar.gz
menstrualcycleR_1.1.1.zip(r-4.7-any)menstrualcycleR_1.1.1.zip(r-4.6-any)
menstrualcycleR_1.1.1.tar.gz(r-4.7-any)menstrualcycleR_1.1.1.tar.gz(r-4.6-any)
menstrualcycleR_1.1.1.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
menstrualcycleR/json (API)

# Install 'menstrualcycleR' in R:
install.packages('menstrualcycleR', repos = c('https://cran.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/eisenlohrmoullab/menstrualcycler/issues

Pkgdown/docs site:https://menstrualcycler.clearlabresearch.com

Datasets:
  • cycledata - Example longitudinal daily dataset with cycle measures
  • cycledata_special - Practice dataset of special cases: one person per setting

On CRAN:

Conda:

3.18 score 15 scripts 6 exports 58 dependencies

Last updated from:dcbe01f983. Checks:6 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-develOK169
source / vignettesOK215
linux-releaseOK191
windows-develOK161
windows-releaseOK164
wasm-releaseOK111

Exports:cycle_plotcycle_plot_individualcycledata_checklaunch_apppacts_scalingsummary_ovulation

Dependencies:base64encbslibcachemclicommonmarkcpp11digestdplyrfarverfastmapfontawesomefsgenericsggplot2gluegridExtragtablehtmltoolshttpuvisobandjquerylibjsonlitelabelinglaterlatticelifecyclelubridatemagrittrmemoisemimeotelpillarpkgconfigpromisespurrrR6rappdirsRColorBrewerRcpprlangS7sassscalesshinysourcetoolsstringistringrtibbletidyrtidyselecttimechangeutf8vctrsviridisviridisLitewithrxtablezoo

Getting Started with menstrualcycleR and Phase-Aligned Cycle Time Scaling (PACTS)
What is PACTS, Scaled Cycle Time, and menstrualcycleR? | Understanding the Challenge | Introducing PACTS | Why Continuous Cycle Modeling? | Anchoring on Ovulation and Menses | Estimating Ovulation Without an Ovulation Biomarker | Optional: imputing the next menses from a confirmed ovulation | Purpose and Use Cases | Data Requirements for Utilizing PACTS and menstrualcycleR | 1. Daily Data with Self-Reported Menses Onset | 2. Ovulation Assessment or Imputation | 3. Cycle Length Inclusion Criteria | 4. Supported Variables and Formats | Installation of the menstrualcycleR package | Using menstrualcycleR | Overview of Package Functions | 1. Cycle Scaling Function: pacts_scaling() | 2. Data Checking Functions | 3. Data Visualization Functions | 4. Launching the Shiny App: launch_app() | Demo dataset | A second dataset, for awkward cases | Applying PACTS | Before and After: Filling Missing Dates Within a Cycle | Summary of Row Counts | Cycle time variables are added in cycle_df_scaled | Checking Data availability | Checking Ovulation Data Availability | Visualizing outcomes across the cycle | cycle_plot() | Note on Rolling Averages | Symptom, Menses-centered | Symptom, Ovulation-centered | Visualizing Individual Participants and Cycles with cycle_plot_individual() | cycle_plot_individual | cycle_plot_individual Output | Cycle_1 summary for ID = 2 | Cycle_1 plot for ID = 2 | Modeling Menstrual Cycle Dynamics with Generalized Additive Mixed Models (GAMMs) | Model Specifications | Running a GAMM | Data Preparation | Interpreting the GAMM Summary Output | Model Family & Link | Model Formula | Parametric Coefficients | Smooth Terms | Model Fit | Visualizing your GAMM across the menstrual cycle | First, we need to compute predicted or model-implied values | Plotting model-implied values | Outstanding Questions | References

Last update: 2026-11-08
Started: 2026-11-08

Preparing Your Data for PACTS
Input format | One row per person per day | Menses onset | Ovulation | From a period-tracker export to the PACTS table | Common device exports | Checks before scaling | Choosing a cycle-time variable | Anchor | Confirmed or imputed ovulation | Sensitivity to imputed ovulation | Extended-phase rows | When your data is awkward | A setting recovers rows and data at different rates | leading_ovulation_luteal_days is a placement, not a cap | Some people cannot be recovered, and it is worth knowing which | The case column disappears on fabricated rows, deliberately | What to report | References

Last update: 2026-11-08
Started: 2026-11-08