Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.4%) to scientific vocabulary
Last synced: 9 months ago
·
JSON representation
Repository
Custom GitHub profile
Basic Info
- Host: GitHub
- Owner: aphalo
- Default Branch: main
- Homepage: https://www.r4photobiology.info
- Size: 169 KB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Created almost 2 years ago
· Last pushed over 1 year ago
Metadata Files
Readme
License
README.Rmd
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "illustrations/",
fig.retina = 3,
out.width = "100%"
)
```
[](https://github.com/anuraghazra/github-readme-stats)
## Computing-related Skills
Programing: R, (Python), C++, (Java), C, bash, awk, Perl, sh, (FORTRAN), Modula-2, Pascal, BASIC, Forth.
Text mark up: $\LaTeX$, $\TeX$, Quarto, Rmarkdown, markdown, HTML.
Revision control systems: git, svn, (cvs), rss.
Drafting: Inkscape, OpenSCAD, Adobe Illustrator.
Image/photography: Capture One, Helicon Focus, Lumariver Profile Designer, RawDigger, VueScan, LightRoom, Photoshop.
Video- and interactive tutorials: FlashBack Pro, R shiny.
## IDE/GUI's I like
WinEdt (for $\LaTeX$, $\TeX$, with embedded R code or not), RStudio (for R scripts, Quarto and Rmarkdown), GitKraken (for git).
## Elsewhere
ORCID profile:
https://orcid.org/0000-0003-3385-972X
Web site for the book [Learn R: As a Language](https://www.learnr-book.info/).
## R Packages
```{r, echo=FALSE}
all_pkgs.df <- tools::CRAN_package_db() |>
tibble::as_tibble()
all_pkgs.df |>
janitor::clean_names() |>
dplyr::filter(grepl("Aphalo", author)) -> my_pkgs.df
my_pkgs.df |>
dplyr::filter(package != "ggrepel") |>
dplyr::select("R package" = package, Title = title, Version = version, Date = published, doi) -> my_pkgs_condensed.df
```
```{r, echo = FALSE}
packages <- my_pkgs_condensed.df[["R package"]]
pkgs_hist.ls <- list()
dates <- lubridate::Date()
for (package in packages) {
temp <- packageRank::packageHistory(package, check.package = TRUE)
dates <- c(dates, temp[["Date"]])
pkgs_hist.ls[[package]] <- temp
}
dates <- sort(dates)
today <- lubridate::today()
first_published <- dates[1]
last_update <- dates[length(dates)]
cran_updates_avg <- length(dates)/as.numeric(today - first_published) * 30
cran_updates_avg <- sprintf("%0.2f", cran_updates_avg)
cran_updates_btw <- as.numeric(today - first_published) / length(dates)
cran_updates_btw <- sprintf("%s", round(cran_updates_btw, digits = 0))
```
The sources of the R packages I have published are in public Git repositories at GitHub. Out of the packages that I have authored and maintain, `r length(packages)` are currently available through CRAN. The total number of package submissions (mostly updates) as author and maintainer is `r length(dates)` since `r format.Date(first_published)`.
I have published in CRAN one package update roughly every `r cran_updates_btw` days, or about `r cran_updates_avg` package updates per month, since `r format.Date(first_published)`.
The most recent of these updates was published in CRAN on `r dates[length(dates)]`.
```{r 'cran-packages-plot', echo = FALSE, fig.width=10, fig.height=2.5}
library(lattice)
cran_releases.df <- data.frame(dates, ones = 1)
# Assuming postdf is loaded and has a 'date' column
# trellis.par.set(background = list(col="transparent"))
xyplot(ones ~ dates,
data = cran_releases.df,
type = 'p',
pch = "|",
cex = 5,
col = "blue",
alpha = 1/3,
xlab = "",
ylab = "",
main = "R Packages: Published Updates at CRAN",
scales = list(x = list(cex = 1.4), y = list(draw = FALSE)),
strip = FALSE, # Removes strip labels
axis.line = list(col = "transparent"),
layout = c(1, 1), # Single panel
par.settings = list(
strip.border = list(col = "transparent"), #making the border transparent
axis.line = list(col = "transparent") #making the axes transparent
)
)
```
📂 Click to expand a list of my packages at CRAN with the most recently updated one at the top.
```{r cran-packages-table, results='asis', echo = FALSE}
my_pkgs_condensed.df |>
dplyr::mutate(Title = paste("[", Title, "](", "https://doi.org/", doi, ")", sep = "")) |>
dplyr::select(-doi) |>
dplyr::arrange(desc(Date)) |>
knitr::kable()
```
Updates under development are published at R-Universe as soon as merged or commited into the main branch in the repositories at GitHub. Two packages that depend on a commercial closed-source driver, but usable with a free runtime of the driver, are published only at R-Universe. Preliminary/experimental incomplete versions of a couple of new packages are already partly usable are also only at R-Universe and here in GitHub.
R-Universe profile: [https://aphalo.r-universe.dev](https://aphalo.r-universe.dev).
[](https://aphalo.r-universe.dev/)
[](https://aphalo.r-universe.dev/)
## Posts and Pages at [R for Photobiology](https://www.r4photobiology.info/)
```{r, echo=FALSE}
find_key <- function(x, key){
j <- lapply(x, function(x){
k <- grep(sprintf("^%s:", key),
x, value = TRUE)
k <- gsub(sprintf("^%s: |'", key), "", k)
k[1]
})
unlist(j)
}
```
```{r, echo = FALSE}
url_root <- "https://www.r4photobiology.info/"
post.files <- list.files("~/R-web-blog/r4p-blog/",
".*qmd$",
recursive = TRUE,
full.names = TRUE)
post.files <- grep("_extensions", x = post.files, value = TRUE, invert = TRUE)
posts <- lapply(post.files, readLines)
r4p_posts.df <- tibble::tibble(
n = seq_along(posts),
draft = find_key(posts, "draft") |>
grepl(pattern = "true", x = _),
date = lubridate::ymd(find_key(posts, "date")),
date.modified = lubridate::ymd(find_key(posts, "date-modified")),
slug = find_key(posts, "slug") |>
gsub('\\"', "", x = _),
title = find_key(posts, "title"),
post.url = paste(url_root,
gsub("C:/Users/Aphalo/Documents/R-web-blog/r4p-blog/|\\.qmd",
"", post.files),
".html",
sep = ""),
link = paste("[", title, "]", "(", post.url, ")", sep = "")
) |>
subset(subset = !draft & !is.na(date)) |> # date is NA for indexes and home
dplyr::mutate(date.modified = as.Date(ifelse(is.na(date.modified), date, date.modified))) |>
dplyr::arrange(date)
today <- lubridate::today()
min_date <- min(r4p_posts.df$date, na.rm = TRUE)
last_post <- lubridate::days(today - max(r4p_posts.df$date, na.rm = TRUE))
last_update <- lubridate::days(today - max(r4p_posts.df$date.modified, na.rm = TRUE))
r4p_post_avg <- nrow(r4p_posts.df)/as.numeric(today - min_date) * 30
r4p_post_avg <- sprintf("%0.1f", r4p_post_avg)
r4p_postbtw <- as.numeric(today - min_date) / nrow(r4p_post_avg)
r4p_postbtw <- sprintf("%s", round(r4p_postbtw, digits = 0))
```
The site [R for Photobiology](https://www.r4photobiology.info) contains `r nrow(r4p_posts.df)` posts and pages published since `r format.Date(min_date)`! I have recently rebuilt the site using Quarto, and I have transferred only some of the posts originally published using WordPress. I am slowly adding more old posts, but only those that remain relevant. The figure below shows original publication date even when posts have been later updated. The source files are in a [public repository at GitHub](https://github.com/aphalo/r4p-blog).
I have published one post or page roughly every `r r4p_postbtw` days, or about `r r4p_post_avg` posts per month, since `r format.Date(min_date)`.
I published the most recent post or page `r as.numeric(last_post) / 3600 / 24` days ago, and most recently updated a previously published one `r as.numeric(last_update) / 3600 / 24` days ago.
```{r 'r4p-plot', echo = FALSE, fig.width=10, fig.height=2.5}
library(lattice)
r4p_posts.df$ones <- 1
# Assuming postdf is loaded and has a 'date' column
# trellis.par.set(background = list(col="transparent"))
xyplot(ones ~ date,
data = r4p_posts.df,
type = 'p',
pch = "|",
cex = 5,
col = "darkblue",
alpha = 1/3,
xlab = "",
ylab = "",
main = "R for Photobiology: Published Posts and Pages",
scales = list(x = list(cex = 1.4), y = list(draw = FALSE)),
strip = FALSE, # Removes strip labels
axis.line = list(col = "transparent"),
layout = c(1, 1), # Single panel
par.settings = list(
strip.border = list(col = "transparent"), #making the border transparent
axis.line = list(col = "transparent") #making the axes transparent
)
)
```
📂 Click to expand a full list of posts.
```{r r4p-posts-table, results='asis', echo = FALSE}
data.frame(
Date = rev(r4p_posts.df$date),
Updated = rev(r4p_posts.df$date.modified),
Title = rev(r4p_posts.df$link)
) |>
knitr::kable()
```
## Posts and pages at [Photo Rumblings and Whispers](https://www.photo-spectrum.info/)
```{r, echo = FALSE, warning=FALSE}
url_root <- "https://www.photo-spectrum.info/"
post.files <- list.files("~/R-web-blog/photo-spectrum-blog/",
".*qmd$",
recursive = TRUE,
full.names = TRUE)
post.files <- grep("_extensions", x = post.files, value = TRUE, invert = TRUE)
posts <- lapply(post.files, readLines)
photo_posts.df <- tibble::tibble(
n = seq_along(posts),
draft = find_key(posts, "draft") |>
grepl(pattern = "true", x = _),
date = lubridate::ymd(find_key(posts, "date")),
date.modified = lubridate::ymd(find_key(posts, "date-modified")),
# slug = find_key(posts, "slug") |>
# gsub('\\"', "", x = _),
title = find_key(posts, "title"),
post.url = paste(url_root,
gsub("C:/Users/Aphalo/Documents/R-web-blog/photo-spectrum-blog/|\\.qmd",
"", post.files),
".html",
sep = ""),
link = paste("[", title, "]", "(", post.url, ")", sep = "")
) |>
subset(subset = !draft & !is.na(date)) |> # date is NA for indexes and home
dplyr::mutate(date.modified = as.Date(ifelse(is.na(date.modified), date, date.modified))) |>
dplyr::arrange(date)
today <- lubridate::today()
min_date <- min(photo_posts.df$date, na.rm = TRUE)
last_post <- lubridate::days(today - max(photo_posts.df$date, na.rm = TRUE))
photo_post_avg <- nrow(photo_posts.df)/as.numeric(today - min_date) * 30
photo_post_avg <- sprintf("%0.1f", photo_post_avg)
photo_postbtw <- as.numeric(today - min_date) / nrow(r4p_post_avg)
photo_postbtw <- sprintf("%s", round(photo_postbtw, digits = 0))
```
The [Photo Rumblings and Whispers](https://www.photo-spectrum.info/) has `r nrow(photo_posts.df)` posts since `r format.Date(min_date)`! I have recently rebuilt the site using Quarto, and I have transferred most of the posts originally published using WordPress. I may add one or two old posts. The figure below shows original publication date even when posts and pages have been later updated. I have updated several of the posts and pages and I aim to continue updating them as needed. The source files are in a [public repository at GitHub](https://github.com/aphalo/photo-spectrum-blog).
I have published one post or page roughly every `r photo_postbtw` days, or about `r photo_post_avg` posts per month, since `r min_date`.
I published the most recent post or page `r as.numeric(last_post) / 3600 / 24` days ago.
```{r 'photo-plot', echo = FALSE, fig.width=10, fig.height=2.5}
library(lattice)
photo_posts.df$ones <- 1
# Assuming postdf is loaded and has a 'date' column
# trellis.par.set(background = list(col="transparent"))
xyplot(ones ~ date,
data = photo_posts.df,
type = 'p',
pch = "|",
cex = 5,
col = "orange",
apha = 1/2,
xlab = "",
ylab = "",
main = "Photo Rumblings and Whispers: Published Posts and Pages",
scales = list(x = list(cex = 1.4), y = list(draw = FALSE)),
strip = FALSE, # Removes strip labels
axis.line = list(col = "transparent"),
layout = c(1, 1), # Single panel
par.settings = list(
strip.border = list(col = "transparent"), #making the border transparent
axis.line = list(col = "transparent") #making the axes transparent
)
)
```
📂 Click to expand a full list of posts.
```{r photo-posts-table, results='asis', echo = FALSE}
data.frame(
Date = rev(photo_posts.df$date),
Updated = rev(photo_posts.df$date.modified),
Title = rev(photo_posts.df$link)
) |>
knitr::kable()
```
_Updated `r Sys.time()`_
This README file is based on the [blog post by Athanasia Mo Mowinckel](https://drmowinckels.io/blog/2024/github-profile/) and the [R code by Martin Henze](https://heads0rtai1s.github.io/2022/07/22/kaggle-dataset-cran-packages/).
Owner
- Name: Pedro Aphalo
- Login: aphalo
- Kind: user
- Location: Helsinki, Finland
- Company: University of Helsinki, Organismal and Evolutionary Biology (OEB)
- Website: http://blogs.helsinki.fi/senpep-blog/
- Repositories: 13
- Profile: https://github.com/aphalo
Senior University Lecturer, Principal Investigator (Sensory Ecology of Plants, Photobiology, Crops, Forest trees, Data Analysis, Data Visualization)
GitHub Events
Total
- Push event: 3
Last Year
- Push event: 3
Committers
Last synced: 12 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Pedro J. Aphalo | p****o@h****i | 13 |
Committer Domains (Top 20 + Academic)
helsinki.fi: 1
Issues and Pull Requests
Last synced: 12 months ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0