generated from annakrystalli/n8cir-reprohacks
-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.en.Rmd
261 lines (171 loc) · 9.31 KB
/
index.en.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
---
title: "LatinR 2020 ReproHack!"
output:
html_document:
theme: flatly
css: reprohack.css
params:
title: "LatinR 2020 ReproHack!"
room_location: "Blackboard Collaborate"
address: "Remote"
date: "8th October 2020"
time: "10:00am - 17:00pm UTC - 3"
bannerurl: "latinr_banner.png"
registration_url: https://www.eventbrite.com.ar/o/reprohack-en-latinr-31351318695
hackpad_url: http://bit.ly/reprohack_latinr2020
submission_url: https://forms.gle/vMk25vCevMg2QiYQ9
reprohack_repo_url: https://github.com/reprohack/LatinR-ReproHack
submission_form_title: "ReproHack Paper Submission Form - n8"
feedback_form_title: "ReproHack feedback form - n8"
runtime: shiny
---
![](`r params$bannerurl`)
# **`r params$title`**
## _A one day hands-on Reproducibility Hackathon_
<br>
#### **`r shiny::icon("clock")` `r params$time`**
#### **`r shiny::icon("calendar")` `r params$date`**
#### **`r shiny::icon("map-marker-alt")` `r params$room_location`**
#### **`r shiny::icon("map-marked-alt")` `r params$address`**
`r shiny::icon("language")` [`r emo::ji("es")`](https://sheffield-university.shinyapps.io/latinr2020-reprohack-es/)<div class='selected-language'>[`r emo::ji("uk")`](https://sheffield-university.shinyapps.io/latinr2020-reprohack/)</div>
```{r, echo = F, results='asis'}
if(!is.null(params$registration_url)){
cat(paste0("### [**REGISTER**](", params$registration_url, ")"))
}
```
[![Slack](https://img.shields.io/badge/slack-join%20us-brightgreen)](https://reprohack-autoinvite.herokuapp.com/)
##### [ReproHack hackpad](`r params$hackpad_url`): containing details for participants
***
# **Welcome `r emo::ji("wave")` **
We are all excited by the progress made by many authors to **make their papers reproducible by publishing associated code and data**.
We know how challenging it can be so we **want to showcase the value of the practice**, both for original authors and as a learning experience for those who attempt to reproduce the work.
## **Event format**:
During a ReproHack, **participants attempt to reproduce published research of their choice from a list of proposed papers with publicly available associated code and data**. Participants get to work with other people's material in a low pressure environment and record their experiences on a number of key aspects, including reproducibility, transparency and reusability of materials. At the end of the day we regroup, share our experiences and give feedback to the authors.
It's imperative to note that **ReproHacks are by no means an attempt to criticise or discredit work**. We see reproduction as **beneficial scientific activity in itself**, with useful outcomes for authors and valuable learning experiences for the participants and the research community as a whole.
***
## **Ways to participate**
<br>
### `r shiny::icon("newspaper")` **Propose a paper**
##### You've put a lot of effort into making your work reproducible. Now let people learn from and engage with it!
Benefits to authors:
- **Feedback** on the reproducibility of your work.
- **Appreciation** for your efforts in making your work reproducible.
- Opportunity to **engage others with your research**.
<br>
### `r shiny::icon("redo-alt")` **Reproduce**
##### Join us at the ReproHack and get working with other people's material.
Benefits to participants:
- **Practical experience in reproducibility** with real published materials and the opportunity to explore different tools and strategies.
- **Inspiration** from working with other people’s code and data.
- An appreciation that **reproducibility is non trivial** but that opening up your work for more people to engage with is the best way to help improve it.
- An appreciation that **reproducibility has community value beyond just the validation of the results**. For example, access to such materials increases the potential for reuse and understanding of the work.
**Benefits to the whole research community:**
- Assessment of how reproducible papers are ‘out of the box’.
- Evaluation of how successful current practices are and for what purpose.
- Identification of what works and where the most pressing weaknesses in our approaches are.
<br>
Keep track of discussions and links to any outputs from our sessions on the event [**hackpad**](`r params$hackpad_url`)
***
# **PROPOSE**
### **Nominate a paper for Reproduction:**
We invite nominations for papers that have both associated **code** and **data** publicly available. We also encourage analyses based on open source tools as we cannot guarantee participants will have access to specialised licenced software.
```{r, echo=FALSE}
library("shiny")
wellPanel(a("Nominate Paper", class = "btn btn-primary btn-md",
href = params$submission_url))
```
## **Proposed papers:**
<br>
```{r, echo=FALSE, message=FALSE, warning=FALSE, eval=require('googlesheets4')}
library(googlesheets4)
options(gargle_oauth_cache = ".secrets",
gargle_oauth_email = "annakrystalli@googlemail.com")
#googlesheets4::sheets_auth()
googledrive::drive_auth()
```
```{r, echo=FALSE}
print_contact_links <- function(responses, i){
row <- responses[i, ]
twitter <- if(!is.na(row[,"Twitter handle (optional)"])){
twitter_url <- paste0("https://twitter.com/", gsub(" *@ *", "", row[,"Twitter handle (optional)"]))
paste0("[<i class='fa fa-twitter'/>](", twitter_url,")")}else{NULL}
github <- if(!is.na(row[,"GitHub username (optional)"])){
github_url <- paste0("https://github.com/", gsub(" *@ *", "", row[,"GitHub username (optional)"]))
paste0("[<i class='fa fa-github'/>](", github_url,")")}else{NULL}
feedback <- if(row[, "Would you like to receive a copy of any feedback on the paper?"] == "Yes"){
"<i class='fa fa-comment-dots'/>"}else{NULL}
public <- if(row[,"Can feedback on your paper be made public?"] == "Yes"){
"<i class='fa fa-globe'/>"}else{NULL}
return(paste(twitter, github, feedback, public))
}
```
```{r, message=FALSE, results='asis', warning=FALSE, echo=FALSE}
match_length <- 45
responses_gs <- sheets_find(paste(params$submission_form_title))
responses <- sheets_read(responses_gs) %>%
dplyr::mutate(match_name = stringr::str_trunc(.data$`Paper title`, match_length) )
# load feedback
feedback_gs <- sheets_find(paste(params$feedback_form_title))
feedback <- sheets_read(feedback_gs) %>%
dplyr::mutate(match_name = stringr::str_trunc(.data$`Which paper did you attempt?`, match_length) )
responses_joined <- fuzzyjoin::stringdist_left_join(feedback, responses,
by = c(match_name = "match_name"),
max_dist = 10,
method = "qgram",
#method = "cosine",
ignore_case = TRUE) %>%
dplyr::select(.data$`Paper title`,
.data$`Which paper did you attempt?`, dplyr::everything()) %>%
assertr::verify(!is.na(.data$`Which paper did you attempt?`))
stats <- dplyr::group_by(responses_joined, .data$`Paper title`) %>%
dplyr::summarise(no_attempts = dplyr::n(),
mean_repro = mean(.data$`On a scale of 1 to 10, how much of the paper did you manage to reproduce?`) %>%
round())
responses <- dplyr::left_join(responses, stats)
row_n <- nrow(responses)
set.seed(12345)
if(row_n > 0){
random_ids <- sample.int(row_n)
for(j in seq_len(row_n)){
i <- random_ids[j]
cat("<div class='card'>")
cat('\n')
cat('\n')
cat('\n')
cat("### **", j,". ", as.character(responses[i, "Paper title"]), "**", "\n", "\n", sep = "")
cat("**", gsub("\n", "", gsub("[*]", "", as.character(responses[i, "Paper citation"]))), "\n**", "\n", "\n", sep = "")
cat("##### *submitted by ", as.character(responses[i, "Name"]), print_contact_links(responses, i), "*", "\n")
if(!is.na(responses[i, "no_attempts"])){
cat("*No. attempts <i class='fa fa-recycle'/>* ", as.character(responses[i, "no_attempts"]), "\n")
cat("*Mean Repro Score <i class='fas fa-check-circle' />* ", as.character(responses[i, "mean_repro"]), "/10 \n\n")
}
cat('\n')
cat('\n')
cat("**Why should we attempt to reproduce this paper?**", "\n", "\n")
cat(as.character(responses[i, "Why should we attempt to reproduce this paper?"]), "\n")
cat('\n')
cat("**Paper URL:** [", as.character(responses[i, "Paper URL"]),"](",as.character(responses[i, "Paper URL"]) ,")", "\n")
cat('\n')
cat("**Data URL:**", as.character(responses[i, "Data URL"]), "\n")
cat('\n')
cat("**Code URL:**", as.character(responses[i, "Code URL"]), "\n")
cat('\n', "\n")
cat("**Useful programming skills:**", as.character(responses[i, "Useful programming skills"]), "\n")
cat("</div>")
cat('\n', "\n",'\n')
}
}
```
```{r, echo=FALSE}
wellPanel(a("Refresh proposal list", class = "btn btn-primary btn-md",
href = "javascript:history.go(0)"))
```
***
#### If you would like to host a ReproHack at your institution please get in touch!
<div class="pull-left">
### Get in touch
Chat to us on [Slack](https://reprohack-autoinvite.herokuapp.com/) or email [reprohack.team@gmail.com](mailto:reprohack.team@gmail.com).
</div>
<div class="pull-right">
<img src="https://www.software.ac.uk/sites/default/files/images/content/SSI_Big300dpi.png" width="100%">
</div>