|
19 | 19 | #' - **Delimited** files using `data.table:fread()`, `arrow:read_delim_arrow()`, |
20 | 20 | #' `vroom::vroom()`, `duckdb::duckdb_read_csv()` |
21 | 21 | # or `polars::pl$read_csv()` |
| 22 | +#' - **FASTA** files using `seqinr::read.fasta()` |
22 | 23 | #' |
23 | 24 | #' @param filename Character: filename or full path if `datadir = NULL` |
24 | 25 | #' @param datadir Character: Optional path to directory where `filename` |
@@ -126,6 +127,18 @@ read <- function(filename, |
126 | 127 | } |
127 | 128 | .dat <- haven::read_dta(path, ...) |
128 | 129 | if (output == "data.table") setDT(.dat) |
| 130 | + } else if (ext == "fasta") { |
| 131 | + dependency_check("seqinr") |
| 132 | + if (verbose) { |
| 133 | + msg20( |
| 134 | + bold(green("\u25B6")), " Reading ", |
| 135 | + hilite(basename(path)), " using seqinr::read.fasta()..." |
| 136 | + ) |
| 137 | + } |
| 138 | + .dat <- seqinr::read.fasta(path, ...) |
| 139 | + # if single sequence, return as character |
| 140 | + if (length(.dat) == 1) .dat <- as.character(.dat[[1]]) |
| 141 | + return(.dat) |
129 | 142 | } else { |
130 | 143 | if (verbose) { |
131 | 144 | msg20( |
@@ -245,7 +258,8 @@ read <- function(filename, |
245 | 258 | } |
246 | 259 |
|
247 | 260 | if (timed) outro(start.time) |
248 | | - .dat |
| 261 | + |
| 262 | + return(.dat) |
249 | 263 | } # rtemis::read |
250 | 264 |
|
251 | 265 | msgread <- function(x, caller = "", use_basename = TRUE) { |
|
0 commit comments