{
  "_id": "6a1f137eb401979e7341e00e",
  "Package": "heartbeatr",
  "Type": "Package",
  "Title": "A Workflow to Process Data Collected with PULSE Systems",
  "Version": "1.0.0",
  "Authors@R": "c(\nperson(\"Rui\", \"Seabra\", , \"ruisea@gmail.com\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-0240-3992\")),\nperson(\"Fernando\", \"Lima\", , \"fplima@gmail.com\", role = c(\"aut\"),\ncomment = c(ORCID = \"0000-0001-9575-9834\"))\n)",
  "Description": "Given one or multiple paths to files produced by a PULSE\nmulti-channel or a PULSE one-channel system\n(<https://electricblue.eu/pulse>) from a single experiment: [1]\ncheck pulse files for inconsistencies and read/merge all data,\n[2] split across time windows, [3] interpolate and smooth to\noptimize the dataset, [4] compute the heart rate frequency for\neach channel/window, and [5] facilitate quality control,\nsummarising and plotting. Heart rate frequency is calculated\nusing the Automatic Multi-scale Peak Detection algorithm\nproposed by Felix Scholkmann and team. For more details see\nScholkmann et al (2012) <doi:10.3390/a5040588>. Check original\ncode at <https://github.com/ig248/pyampd>. ElectricBlue is a\nnon-profit technology transfer startup creating\nresearch-oriented solutions for the scientific community\n(<https://electricblue.eu>).",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "Config/testthat/edition": "3",
  "RoxygenNote": "7.3.3",
  "VignetteBuilder": "knitr",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-17 07:21:42 UTC",
    "User": "root"
  },
  "Author": "Rui Seabra [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-0240-3992>), Fernando Lima [aut]\n(ORCID: <https://orcid.org/0000-0001-9575-9834>)",
  "Maintainer": "Rui Seabra <ruisea@gmail.com>",
  "Config/pak/sysreqs": "libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev\nlibavfilter-dev libicu-dev libssl-dev libproj-dev\nlibsqlite3-dev libudunits2-dev libx11-dev",
  "Repository": "https://ruiseabra.r-universe.dev",
  "Date/Publication": "2025-09-18 09:00:02 UTC",
  "RemoteUrl": "https://github.com/cran/heartbeatr",
  "RemoteRef": "HEAD",
  "RemoteSha": "780301036a963b7a109a2724490ac311320005fd",
  "MD5sum": "5e7e63ceda3f7c5ddf316789eb2c69f6",
  "_user": "ruiseabra",
  "_type": "src",
  "_file": "heartbeatr_1.0.0.tar.gz",
  "_fileid": "d52f81b5b891dd06a3a788d414d2322ccd3d6c330855b397bd774092eb579fb6",
  "_filesize": 3171459,
  "_sha256": "d52f81b5b891dd06a3a788d414d2322ccd3d6c330855b397bd774092eb579fb6",
  "_created": "2026-05-17T07:21:42.000Z",
  "_published": "2026-06-02T17:31:42.637Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79132470259,
      "time": 168,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7040397231"
    },
    {
      "job": 79132470294,
      "time": 156,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7040395915"
    },
    {
      "job": 79132469877,
      "time": 146,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7040392463"
    },
    {
      "job": 79132469677,
      "time": 166,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7040393350"
    },
    {
      "job": 79132469170,
      "time": 225,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7040377482"
    },
    {
      "job": 79132469185,
      "time": 121,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7365169202"
    },
    {
      "job": 79132470427,
      "time": 110,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7040390828"
    },
    {
      "job": 79132470649,
      "time": 125,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7040392434"
    },
    {
      "job": 79132470268,
      "time": 104,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7040390009"
    }
  ],
  "_buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/heartbeatr",
  "_commit": {
    "id": "780301036a963b7a109a2724490ac311320005fd",
    "author": "Rui Seabra <ruisea@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.0.0\n",
    "time": 1758186002
  },
  "_maintainer": {
    "name": "Rui Seabra",
    "email": "ruisea@gmail.com",
    "login": "ruiseabra",
    "twitter": "@rui_seabra",
    "description": "Marine biologist at CIBIO-BIOPOLIS (Portugal). National Geographic Explorer. Co-founder of www.Electricblue.eu. Traveler, wave rider, and husband/father.",
    "uuid": 6738826,
    "orcid": "0000-0002-0240-3992"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "av",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "lubridate",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "readr",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "transformr",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-38",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "1.0.0",
      "date": "2025-09-18"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "ruiseabra",
      "count": 1,
      "uuid": 6738826
    }
  ],
  "_userbio": {
    "uuid": 6738826,
    "type": "user",
    "name": "Rui Seabra",
    "description": "Marine biologist at CIBIO-BIOPOLIS (Portugal). National Geographic Explorer. Co-founder of www.Electricblue.eu. Traveler, wave rider, and husband/father."
  },
  "_downloads": {
    "count": 211,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/heartbeatr"
  },
  "_searchresults": 2,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/heartbeatr.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_realowner": "ruiseabra",
  "_cranurl": false,
  "_releases": [
    {
      "version": "1.0.0",
      "date": "2025-09-18"
    }
  ],
  "_exports": [
    "find_peaks",
    "is.pulse",
    "PULSE",
    "PULSE_by_chunks",
    "pulse_choose_keep",
    "pulse_doublecheck",
    "pulse_example",
    "pulse_find_peaks_all_channels",
    "pulse_find_peaks_one_channel",
    "pulse_halve",
    "pulse_heart",
    "pulse_interpolate",
    "pulse_normalize",
    "pulse_optimize",
    "pulse_plot",
    "pulse_plot_one",
    "pulse_plot_raw",
    "pulse_read",
    "pulse_smooth",
    "pulse_split",
    "pulse_summarise"
  ],
  "_datasets": [
    {
      "name": "pulse_data",
      "title": "PULSE multi-channel example data",
      "object": "pulse_data",
      "class": [
        "list"
      ],
      "fields": [],
      "table": false,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "find_peaks",
      "title": "Find peaks of waves in raw PULSE data",
      "topics": [
        "find_peaks"
      ]
    },
    {
      "page": "is.pulse",
      "title": "heartbeatr utility function",
      "topics": [
        "is.pulse"
      ]
    },
    {
      "page": "PULSE",
      "title": "Process PULSE data from a single experiment (STEPS 1-6)",
      "topics": [
        "PULSE"
      ]
    },
    {
      "page": "PULSE_by_chunks",
      "title": "Process PULSE data file by file (STEPS 1-6)",
      "topics": [
        "PULSE_by_chunks"
      ]
    },
    {
      "page": "pulse_choose_keep",
      "title": "(STEP 6) Choose the best heart beat frequency estimate from among two estimates derived from raw and smoothed data",
      "topics": [
        "pulse_choose_keep"
      ]
    },
    {
      "page": "pulse_data",
      "title": "PULSE multi-channel example data",
      "topics": [
        "pulse_data"
      ]
    },
    {
      "page": "pulse_doublecheck",
      "title": "(STEP 5) Fix heart rate frequencies double the real value",
      "topics": [
        "pulse_doublecheck"
      ]
    },
    {
      "page": "pulse_example",
      "title": "Get paths to pulse example files",
      "topics": [
        "pulse_example"
      ]
    },
    {
      "page": "pulse_find_peaks_all_channels",
      "title": "Determine the heartbeat rate in all channels of a PULSE split window",
      "topics": [
        "pulse_find_peaks_all_channels"
      ]
    },
    {
      "page": "pulse_find_peaks_one_channel",
      "title": "Determine the heart beat frequency in one PULSE channel",
      "topics": [
        "pulse_find_peaks_one_channel"
      ]
    },
    {
      "page": "pulse_halve",
      "title": "Halves heart beat frequencies computed by 'pulse_heart'",
      "topics": [
        "pulse_halve"
      ]
    },
    {
      "page": "pulse_heart",
      "title": "(STEP 4) Determine the heartbeat rate in all channels of a split PULSE object",
      "topics": [
        "pulse_heart"
      ]
    },
    {
      "page": "pulse_interpolate",
      "title": "Increase the number of data points in PULSE data through interpolation",
      "topics": [
        "pulse_interpolate"
      ]
    },
    {
      "page": "pulse_normalize",
      "title": "Normalize PULSE heartbeat rate estimates",
      "topics": [
        "pulse_normalize"
      ]
    },
    {
      "page": "pulse_optimize",
      "title": "(STEP 3) Optimize PULSE data through interpolation and smoothing",
      "topics": [
        "pulse_optimize"
      ]
    },
    {
      "page": "pulse_plot",
      "title": "Plot processed PULSE data",
      "topics": [
        "pulse_plot"
      ]
    },
    {
      "page": "pulse_plot_one",
      "title": "heartbeatr utility function",
      "topics": [
        "pulse_plot_one"
      ]
    },
    {
      "page": "pulse_plot_raw",
      "title": "Plot raw PULSE data",
      "topics": [
        "pulse_plot_raw"
      ]
    },
    {
      "page": "pulse_read",
      "title": "(STEP 1) Read data from all PULSE files in the target folder",
      "topics": [
        "pulse_read"
      ]
    },
    {
      "page": "pulse_smooth",
      "title": "Smooth PULSE data",
      "topics": [
        "pulse_smooth"
      ]
    },
    {
      "page": "pulse_split",
      "title": "(STEP 2) Split 'pulse_data' across sequential time windows",
      "topics": [
        "pulse_split"
      ]
    },
    {
      "page": "pulse_summarise",
      "title": "Summarise PULSE heartbeat rate estimates over new time windows",
      "topics": [
        "pulse_summarise"
      ]
    }
  ],
  "_readme": "https://github.com/cran/heartbeatr/raw/HEAD/README.md",
  "_rundeps": [
    "av",
    "bit",
    "bit64",
    "class",
    "classInt",
    "cli",
    "clipr",
    "cpp11",
    "crayon",
    "DBI",
    "dplyr",
    "e1071",
    "farver",
    "generics",
    "ggplot2",
    "glue",
    "gtable",
    "hms",
    "isoband",
    "KernSmooth",
    "labeling",
    "lifecycle",
    "lpSolve",
    "lubridate",
    "magrittr",
    "MASS",
    "pillar",
    "pkgconfig",
    "prettyunits",
    "progress",
    "proxy",
    "purrr",
    "R6",
    "RColorBrewer",
    "Rcpp",
    "readr",
    "rlang",
    "s2",
    "S7",
    "scales",
    "sf",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "timechange",
    "transformr",
    "tweenr",
    "tzdb",
    "units",
    "utf8",
    "vctrs",
    "viridisLite",
    "vroom",
    "withr",
    "wk"
  ],
  "_vignettes": [
    {
      "source": "workflow.Rmd",
      "filename": "workflow.html",
      "title": "workflow",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Input data",
        "PULSE files",
        "header section",
        "data section",
        "One experiment",
        "The heartbeatr workflow",
        "import data into R with pulse_read()",
        "split continuous data over time windows with pulse_split()",
        "interpolate and smooth data with pulse_optimize()",
        "compute heart rates with pulse_heart()",
        "detect heart rate doublings with pulse_doublecheck()",
        "select which heart rate estimates to keep with pulse_choose_keep()",
        "The simple version",
        "Visualizing",
        "check all data using pulse_plot()",
        "inspect raw data with pulse_plot_raw()",
        "Optimizing parameters (bandwidth)",
        "Warning against HRV analyses",
        "Post-processing",
        "Normalizing",
        "Summarising"
      ],
      "created": "2025-09-18 09:00:02",
      "modified": "2025-09-18 09:00:02",
      "commits": 1
    }
  ],
  "_score": 2.6989700043360187,
  "_indexed": true,
  "_nocasepkg": "heartbeatr",
  "_universes": [
    "ruiseabra"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-05-17T07:24:17.000Z",
      "distro": "noble",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "77ac59a4f09dc09a8b6fe3d7bee67f5c99b2e94e53f9643c39ccfbdc189c4a53",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-05-17T07:24:05.000Z",
      "distro": "noble",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "c49a93e1f76516582a0a03ddf9d9eb54ae4cd6d2e6a5d55c5fee76ce3590a3e0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-05-17T07:23:43.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "099c0cdcaf53d75441fa7e81d7ac1972ba51fe0ed299f496e96dc41284496739",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-05-17T07:23:47.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "495b73471ca6f5c486feb194580f9958396e70810e551dae36c9f8564d8e6408",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-05-17T07:23:10.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "3ffb2a2a9a717d53d41baceb35f2256eb099605623c1c832886a37143f7d5d58",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-05-17T07:23:20.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "5e9e0d5a72c1ab74a60efe4960e3132b4be7375b147daa32416df2d92e44fbe7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-05-17T07:23:04.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "fdc3e99ab418d8cd44ff0018cd72a61930986772f40e513e4993327fdfdb2652",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0",
      "date": "2026-06-02T17:31:07.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "30bb3825b8ada02a96bc6a203a0d5375601ac993941fe0993e777fdf5cac56c8",
      "status": "success",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/25984450297"
    }
  ]
}