library(rprime)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(purrr)

setwd("../")
# Locate files
sails_paths <- list.files(
  "./vignettes/data/SAILS/",
  pattern = ".txt",
  full.names = TRUE)

# Include a bad file (for testing)
sails_paths <- c(sails_paths, "fake-file.txt")

# Write a function to clean up on of them
sails_path <- sails_paths[1]

reduce_sails <- function(sails_path) {
  sails_lines <- read_eprime(sails_path)
  sails_frames <- FrameList(sails_lines)

  # Trials occur at level 3
  sails_frames <- keep_levels(sails_frames, 3)
  sails <- to_data_frame(sails_frames)

  # Tidy up
  to_pick <- c("Eprime.Basename", "Running", "Module", "Sound",
               "Sample", "Correct", "Response")
  sails <- sails[to_pick]
  running_map <- c(TrialLists = "Trial", PracticeBlock = "Practice")
  sails$Running <- running_map[sails$Running]

  # Renumber trials in the practice and experimental blocks separately.
  # Numerically code correct response.
  sails %>%
    group_by(Running) %>%
    mutate(TrialNumber = seq(from = 1, to = length(Running)),
           CorrectResponse = ifelse(Correct == Response, 1, 0)) %>%
    select(-Sample)

  sails
}

# Confirm it works on one
head(reduce_sails(sails_path))
##   Eprime.Basename  Running Module     Sound Sample Correct Response
## 1 SAILS_001X00XS1 Practice   LAKE LAKE1.WAV      1    Word     Word
## 2 SAILS_001X00XS1 Practice   LAKE  MAKE.WAV      2 NotWord  NotWord
## 3 SAILS_001X00XS1 Practice   LAKE LAKE1.WAV      3    Word     Word
## 4 SAILS_001X00XS1 Practice   LAKE LAKE1.WAV      4    Word     Word
## 5 SAILS_001X00XS1 Practice   LAKE  MAKE.WAV      5 NotWord  NotWord
## 6 SAILS_001X00XS1 Practice   LAKE LAKE1.WAV      6    Word     Word
# Wrap it in safely so that a single bad file doesn't crash everything
# see ?purrr::safely
try_reduce_sails <- safely(reduce_sails)

results <- sails_paths %>%
  map(try_reduce_sails)

# See errors
results %>%
  map("error")
## [[1]]
## NULL
## 
## [[2]]
## NULL
## 
## [[3]]
## <simpleError: file.exists(fname) is not TRUE>
# Combine data that could be loaded
results %>%
  map_df("result")
##     Eprime.Basename  Running Module       Sound Sample Correct Response
## 1   SAILS_001X00XS1 Practice   LAKE   LAKE1.WAV      1    Word     Word
## 2   SAILS_001X00XS1 Practice   LAKE    MAKE.WAV      2 NotWord  NotWord
## 3   SAILS_001X00XS1 Practice   LAKE   LAKE1.WAV      3    Word     Word
## 4   SAILS_001X00XS1 Practice   LAKE   LAKE1.WAV      4    Word     Word
## 5   SAILS_001X00XS1 Practice   LAKE    MAKE.WAV      5 NotWord  NotWord
## 6   SAILS_001X00XS1 Practice   LAKE   LAKE1.WAV      6    Word     Word
## 7   SAILS_001X00XS1 Practice   LAKE    MAKE.WAV      7 NotWord  NotWord
## 8   SAILS_001X00XS1 Practice   LAKE    MAKE.WAV      8 NotWord  NotWord
## 9   SAILS_001X00XS1 Practice   LAKE   LAKE1.WAV      9    Word     Word
## 10  SAILS_001X00XS1 Practice   LAKE    MAKE.WAV     10 NotWord  NotWord
## 11  SAILS_001X00XS1    Trial   LAKE LAKE23B.WAV      1    Word     Word
## 12  SAILS_001X00XS1    Trial   LAKE   LAKE3.WAV      2    Word     Word
## 13  SAILS_001X00XS1    Trial   LAKE  LAKE17.WAV      3 NotWord  NotWord
## 14  SAILS_001X00XS1    Trial   LAKE   LAKE6.WAV      4    Word     Word
## 15  SAILS_001X00XS1    Trial   LAKE   LAKE2.WAV      5    Word     Word
## 16  SAILS_001X00XS1    Trial   LAKE  LAKE26.WAV      6    Word     Word
## 17  SAILS_001X00XS1    Trial   LAKE  LAKE18.WAV      7 NotWord  NotWord
## 18  SAILS_001X00XS1    Trial   LAKE LAKE30A.WAV      8 NotWord  NotWord
## 19  SAILS_001X00XS1    Trial   LAKE  LAKE31.WAV      9 NotWord  NotWord
## 20  SAILS_001X00XS1    Trial   LAKE  LAKE32.WAV     10 NotWord  NotWord
## 21  SAILS_001X00XS1    Trial    CAT   CAT15.WAV     11    Word     Word
## 22  SAILS_001X00XS1    Trial    CAT  CAT14B.WAV     12 NotWord  NotWord
## 23  SAILS_001X00XS1    Trial    CAT   CAT13.WAV     13 NotWord  NotWord
## 24  SAILS_001X00XS1    Trial    CAT   CAT26.WAV     14    Word     Word
## 25  SAILS_001X00XS1    Trial    CAT   CAT24.WAV     15 NotWord     Word
## 26  SAILS_001X00XS1    Trial    CAT    CAT4.WAV     16    Word     Word
## 27  SAILS_001X00XS1    Trial    CAT   Cat16.WAV     17 NotWord  NotWord
## 28  SAILS_001X00XS1    Trial    CAT   CAt23.WAV     18    Word     Word
## 29  SAILS_001X00XS1    Trial    CAT  CAT13B.WAV     19 NotWord  NotWord
## 30  SAILS_001X00XS1    Trial    CAT   CAT27.WAV     20    Word     Word
## 31  SAILS_001X00XS1    Trial    RAT   RAT20.WAV     21 NotWord  NotWord
## 32  SAILS_001X00XS1    Trial    RAT   RAT24.WAV     22 NotWord  NotWord
## 33  SAILS_001X00XS1    Trial    RAT   RAT11.WAV     23    Word     Word
## 34  SAILS_001X00XS1    Trial    RAT   RAT14.WAV     24 NotWord  NotWord
## 35  SAILS_001X00XS1    Trial    RAT   RAT26.WAV     25    Word     Word
## 36  SAILS_001X00XS1    Trial    RAT   RAT23.WAV     26    Word     Word
## 37  SAILS_001X00XS1    Trial    RAT    RAT9.WAV     27 NotWord  NotWord
## 38  SAILS_001X00XS1    Trial    RAT   RAT17.WAV     28 NotWord  NotWord
## 39  SAILS_001X00XS1    Trial    RAT   RAT27.WAV     29    Word     Word
## 40  SAILS_001X00XS1    Trial    RAT   RAT25.WAV     30    Word     Word
## 41  SAILS_001X00XS1    Trial    RAT   RAT13.WAV     31 NotWord  NotWord
## 42  SAILS_001X00XS1    Trial    RAT  RAT15B.WAV     32    Word  NotWord
## 43  SAILS_001X00XS1    Trial    RAT   RAT21.WAV     33 NotWord     Word
## 44  SAILS_001X00XS1    Trial    RAT   RAT22.WAV     34     Rat     Word
## 45  SAILS_001X00XS1    Trial    RAT    RAT1.WAV     35    Word     Word
## 46  SAILS_001X00XS1    Trial    RAT   RAT33.WAV     36 NotWord  NotWord
## 47  SAILS_001X00XS1    Trial    RAT    RAT2.WAV     37    Word     Word
## 48  SAILS_001X00XS1    Trial    RAT    RAT7.WAV     38 NotWord  NotWord
## 49  SAILS_001X00XS1    Trial    RAT    RAT3.WAV     39    Word  NotWord
## 50  SAILS_001X00XS1    Trial    RAT  RAT32B.WAV     40 NotWord  NotWord
## 51  SAILS_001X00XS1    Trial    SUE    SUE4.WAV     41    Word     Word
## 52  SAILS_001X00XS1    Trial    SUE   SUE15.WAV     42 NotWord  NotWord
## 53  SAILS_001X00XS1    Trial    SUE   SUE17.WAV     43 NotWord     Word
## 54  SAILS_001X00XS1    Trial    SUE    SUE5.WAV     44    Word     Word
## 55  SAILS_001X00XS1    Trial    SUE  SUE30A.WAV     45 NotWord  NotWord
## 56  SAILS_001X00XS1    Trial    SUE    SUE1.WAV     46    Word     Word
## 57  SAILS_001X00XS1    Trial    SUE  SUE13B.WAV     47 NotWord  NotWord
## 58  SAILS_001X00XS1    Trial    SUE  SUE26A.WAV     48    Word     Word
## 59  SAILS_001X00XS1    Trial    SUE   SUE19.WAV     49    Word     Word
## 60  SAILS_001X00XS1    Trial    SUE   SUE13.WAV     50 NotWord  NotWord
## 61  SAILS_001X00XS1    Trial    SUE   SUE16.WAV     51 NotWord     Word
## 62  SAILS_001X00XS1    Trial    SUE   SUE20.WAV     52 NotWord  NotWord
## 63  SAILS_001X00XS1    Trial    SUE    SUE6.WAV     53    Word     Word
## 64  SAILS_001X00XS1    Trial    SUE  SUE28B.WAV     54 NotWord  NotWord
## 65  SAILS_001X00XS1    Trial    SUE   SUE29.WAV     55 NotWord  NotWord
## 66  SAILS_001X00XS1    Trial    SUE    SUE5.WAV     56    Word     Word
## 67  SAILS_001X00XS1    Trial    SUE   SUE25.WAV     57    Word     Word
## 68  SAILS_001X00XS1    Trial    SUE   SUE19.WAV     58    Word     Word
## 69  SAILS_001X00XS1    Trial    SUE    SUE2.WAV     59    Word     Word
## 70  SAILS_001X00XS1    Trial    SUE  SUE29B.WAV     60 NotWord     Word
## 71  SAILS_001X00XS1    Trial    SUE    SUE4.WAV     61    Word     Word
## 72  SAILS_001X00XS1    Trial    SUE    SUE8.WAV     62 NotWord  NotWord
## 73  SAILS_001X00XS1    Trial    SUE    SUE9.WAV     63    Word     Word
## 74  SAILS_001X00XS1    Trial    SUE  SUE21B.WAV     64 NotWord  NotWord
## 75  SAILS_001X00XS1    Trial    SUE   SUE11.WAV     65 NotWord     Word
## 76  SAILS_001X00XS1    Trial    SUE  SUE27C.WAV     66    Word     Word
## 77  SAILS_001X00XS1    Trial    SUE  SUE26A.WAV     67    Word     Word
## 78  SAILS_001X00XS1    Trial    SUE  SUE18C.WAV     68 NotWord  NotWord
## 79  SAILS_001X00XS1    Trial    SUE  SUE17B.WAV     69 NotWord  NotWord
## 80  SAILS_001X00XS1    Trial    SUE   SUE25.WAV     70    Word     Word
## 81  SAILS_002X00XS1 Practice   LAKE   LAKE1.WAV      1    Word  NotWord
## 82  SAILS_002X00XS1 Practice   LAKE    MAKE.WAV      2 NotWord  NotWord
## 83  SAILS_002X00XS1 Practice   LAKE   LAKE1.WAV      3    Word     Word
## 84  SAILS_002X00XS1 Practice   LAKE   LAKE1.WAV      4    Word     Word
## 85  SAILS_002X00XS1 Practice   LAKE    MAKE.WAV      5 NotWord  NotWord
## 86  SAILS_002X00XS1 Practice   LAKE   LAKE1.WAV      6    Word     Word
## 87  SAILS_002X00XS1 Practice   LAKE    MAKE.WAV      7 NotWord  NotWord
## 88  SAILS_002X00XS1 Practice   LAKE    MAKE.WAV      8 NotWord  NotWord
## 89  SAILS_002X00XS1 Practice   LAKE   LAKE1.WAV      9    Word     Word
## 90  SAILS_002X00XS1 Practice   LAKE    MAKE.WAV     10 NotWord  NotWord
## 91  SAILS_002X00XS1    Trial   LAKE  LAKE18.WAV      1 NotWord  NotWord
## 92  SAILS_002X00XS1    Trial   LAKE  LAKE31.WAV      2 NotWord  NotWord
## 93  SAILS_002X00XS1    Trial   LAKE   LAKE6.WAV      3    Word     Word
## 94  SAILS_002X00XS1    Trial   LAKE  LAKE26.WAV      4    Word     Word
## 95  SAILS_002X00XS1    Trial   LAKE  LAKE32.WAV      5 NotWord  NotWord
## 96  SAILS_002X00XS1    Trial   LAKE LAKE23B.WAV      6    Word     Word
## 97  SAILS_002X00XS1    Trial   LAKE   LAKE2.WAV      7    Word     Word
## 98  SAILS_002X00XS1    Trial   LAKE  LAKE17.WAV      8 NotWord  NotWord
## 99  SAILS_002X00XS1    Trial   LAKE   LAKE3.WAV      9    Word     Word
## 100 SAILS_002X00XS1    Trial   LAKE LAKE30A.WAV     10 NotWord  NotWord
## 101 SAILS_002X00XS1    Trial    CAT   CAT27.WAV     11    Word     Word
## 102 SAILS_002X00XS1    Trial    CAT   CAT15.WAV     12    Word  NotWord
## 103 SAILS_002X00XS1    Trial    CAT   Cat16.WAV     13 NotWord  NotWord
## 104 SAILS_002X00XS1    Trial    CAT   CAT13.WAV     14 NotWord  NotWord
## 105 SAILS_002X00XS1    Trial    CAT   CAt23.WAV     15    Word     Word
## 106 SAILS_002X00XS1    Trial    CAT    CAT4.WAV     16    Word     Word
## 107 SAILS_002X00XS1    Trial    CAT  CAT14B.WAV     17 NotWord  NotWord
## 108 SAILS_002X00XS1    Trial    CAT  CAT13B.WAV     18 NotWord  NotWord
## 109 SAILS_002X00XS1    Trial    CAT   CAT26.WAV     19    Word     Word
## 110 SAILS_002X00XS1    Trial    CAT   CAT24.WAV     20 NotWord     Word
## 111 SAILS_002X00XS1    Trial    RAT   RAT24.WAV     21 NotWord  NotWord
## 112 SAILS_002X00XS1    Trial    RAT   RAT23.WAV     22    Word  NotWord
## 113 SAILS_002X00XS1    Trial    RAT   RAT25.WAV     23    Word  NotWord
## 114 SAILS_002X00XS1    Trial    RAT   RAT17.WAV     24 NotWord  NotWord
## 115 SAILS_002X00XS1    Trial    RAT    RAT9.WAV     25 NotWord  NotWord
## 116 SAILS_002X00XS1    Trial    RAT   RAT14.WAV     26 NotWord  NotWord
## 117 SAILS_002X00XS1    Trial    RAT   RAT20.WAV     27 NotWord  NotWord
## 118 SAILS_002X00XS1    Trial    RAT   RAT11.WAV     28    Word  NotWord
## 119 SAILS_002X00XS1    Trial    RAT   RAT27.WAV     29    Word  NotWord
## 120 SAILS_002X00XS1    Trial    RAT   RAT26.WAV     30    Word  NotWord
## 121 SAILS_002X00XS1    Trial    RAT    RAT7.WAV     31 NotWord  NotWord
## 122 SAILS_002X00XS1    Trial    RAT   RAT21.WAV     32 NotWord  NotWord
## 123 SAILS_002X00XS1    Trial    RAT    RAT3.WAV     33    Word  NotWord
## 124 SAILS_002X00XS1    Trial    RAT    RAT1.WAV     34    Word  NotWord
## 125 SAILS_002X00XS1    Trial    RAT  RAT15B.WAV     35    Word  NotWord
## 126 SAILS_002X00XS1    Trial    RAT  RAT32B.WAV     36 NotWord  NotWord
## 127 SAILS_002X00XS1    Trial    RAT   RAT33.WAV     37 NotWord  NotWord
## 128 SAILS_002X00XS1    Trial    RAT    RAT2.WAV     38    Word     Word
## 129 SAILS_002X00XS1    Trial    RAT   RAT22.WAV     39     Rat  NotWord
## 130 SAILS_002X00XS1    Trial    RAT   RAT13.WAV     40 NotWord  NotWord
## 131 SAILS_002X00XS1    Trial    SUE  SUE26A.WAV     41    Word     Word
## 132 SAILS_002X00XS1    Trial    SUE    SUE5.WAV     42    Word     Word
## 133 SAILS_002X00XS1    Trial    SUE   SUE17.WAV     43 NotWord  NotWord
## 134 SAILS_002X00XS1    Trial    SUE    SUE4.WAV     44    Word     Word
## 135 SAILS_002X00XS1    Trial    SUE   SUE15.WAV     45 NotWord  NotWord
## 136 SAILS_002X00XS1    Trial    SUE  SUE30A.WAV     46 NotWord  NotWord
## 137 SAILS_002X00XS1    Trial    SUE   SUE13.WAV     47 NotWord  NotWord
## 138 SAILS_002X00XS1    Trial    SUE    SUE1.WAV     48    Word     Word
## 139 SAILS_002X00XS1    Trial    SUE  SUE13B.WAV     49 NotWord  NotWord
## 140 SAILS_002X00XS1    Trial    SUE   SUE19.WAV     50    Word     Word
## 141 SAILS_002X00XS1    Trial    SUE  SUE29B.WAV     51 NotWord  NotWord
## 142 SAILS_002X00XS1    Trial    SUE   SUE20.WAV     52 NotWord  NotWord
## 143 SAILS_002X00XS1    Trial    SUE    SUE5.WAV     53    Word     Word
## 144 SAILS_002X00XS1    Trial    SUE  SUE28B.WAV     54 NotWord  NotWord
## 145 SAILS_002X00XS1    Trial    SUE   SUE16.WAV     55 NotWord  NotWord
## 146 SAILS_002X00XS1    Trial    SUE    SUE2.WAV     56    Word     Word
## 147 SAILS_002X00XS1    Trial    SUE    SUE6.WAV     57    Word     Word
## 148 SAILS_002X00XS1    Trial    SUE   SUE29.WAV     58 NotWord  NotWord
## 149 SAILS_002X00XS1    Trial    SUE   SUE19.WAV     59    Word  NotWord
## 150 SAILS_002X00XS1    Trial    SUE   SUE25.WAV     60    Word     Word
## 151 SAILS_002X00XS1    Trial    SUE  SUE21B.WAV     61 NotWord  NotWord
## 152 SAILS_002X00XS1    Trial    SUE  SUE26A.WAV     62    Word     Word
## 153 SAILS_002X00XS1    Trial    SUE  SUE27C.WAV     63    Word     Word
## 154 SAILS_002X00XS1    Trial    SUE    SUE9.WAV     64    Word  NotWord
## 155 SAILS_002X00XS1    Trial    SUE   SUE25.WAV     65    Word     Word
## 156 SAILS_002X00XS1    Trial    SUE  SUE18C.WAV     66 NotWord  NotWord
## 157 SAILS_002X00XS1    Trial    SUE    SUE4.WAV     67    Word     Word
## 158 SAILS_002X00XS1    Trial    SUE  SUE17B.WAV     68 NotWord  NotWord
## 159 SAILS_002X00XS1    Trial    SUE   SUE11.WAV     69 NotWord  NotWord
## 160 SAILS_002X00XS1    Trial    SUE    SUE8.WAV     70 NotWord  NotWord