{
  "_id": "6acf3d21d9de2f3f33fc96b1",
  "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-10-14 07:53:54 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",
  "_user": "ruiseabra",
  "_type": "src",
  "_file": "heartbeatr_1.0.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/176ef43a489b4f3aa2d8f7a7abe632c12f099d45409d37addf7ba0d1c1383198",
  "_filesize": 3171955,
  "_sha256": "176ef43a489b4f3aa2d8f7a7abe632c12f099d45409d37addf7ba0d1c1383198",
  "_expires": "2027-01-22T08:28:15.000Z",
  "_created": "2026-10-14T07:53:54.000Z",
  "_published": "2026-10-14T08:28:17.620Z",
  "_buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 115743919482,
      "time": 159,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11877653320"
    },
    {
      "job": 115743919570,
      "time": 151,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11878676368"
    },
    {
      "job": 115743919508,
      "time": 163,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11880075299"
    },
    {
      "job": 115743919489,
      "time": 222,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11879573610"
    },
    {
      "job": 115742486592,
      "time": 234,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11877772694"
    },
    {
      "job": 115743919401,
      "time": 126,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11878446912"
    },
    {
      "job": 115743919452,
      "time": 101,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11877658220"
    },
    {
      "job": 115743919498,
      "time": 103,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11878347100"
    },
    {
      "job": 115743919446,
      "time": 95,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11878621167"
    }
  ],
  "_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"
  },
  "_distro": "resolute",
  "_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": [],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "ruiseabra",
      "count": 1,
      "uuid": 6738826
    }
  ],
  "_userbio": {
    "uuid": 6738826,
    "type": "user",
    "name": "Rui Seabra",
    "followers": 2,
    "description": "Marine biologist at CIBIO-BIOPOLIS (Portugal). National Geographic Explorer. Co-founder of www.Electricblue.eu. Traveler, wave rider, and husband/father."
  },
  "_downloads": {
    "count": 284,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/heartbeatr"
  },
  "_searchresults": 1,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/heartbeatr.html",
    "extra/manual.pdf",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_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",
    "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-10-14T07:56:27.000Z",
      "distro": "resolute",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/0fc81373861330fd80cc1dd069faec6ae2aa0749f5ed758fb35b5d67fd6ef5bc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-10-14T07:56:10.000Z",
      "distro": "resolute",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/2488fe236458baf03a26976d4731e68f686f4fd959fc2734940f1ab49f399d44",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-10-14T08:25:58.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/62f32c61c9e9314c85178b2acf869695bf2523adea96f5939d8d1de1478829a2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.0.0",
      "date": "2026-10-14T08:26:19.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/68e994fae09791ef51593b1ca13204df30ca283d3af86e1b06e6e7d875d2bb1e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0",
      "date": "2026-10-14T07:56:28.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/bc0bc2836d65fc687eecf4ecf4f8c8180121ff3ce92deb8590c40ffac3f2b7fc",
      "status": "success",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-14T07:55:11.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/eef9dfffe122109b33702e34fc5d5998d85b4c818b6d4bf01546eff94c0e3a09",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-14T07:55:15.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/a262330f5a90e520b70d75d3741c844af529760d2f472c8b9c667ba946899bcf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-14T07:55:04.000Z",
      "commit": "780301036a963b7a109a2724490ac311320005fd",
      "fileid": "https://r2.ropensci.org/727f684e02233e55cea9eb25b8af2ff8172c79dc40c96b98d9d8e141ded53417",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ruiseabra/actions/runs/38530928209"
    }
  ]
}