diff --git a/404.html b/404.html index b7981ff..3061864 100644 --- a/404.html +++ b/404.html @@ -13,9 +13,9 @@ - - - + + + @@ -52,6 +52,9 @@ + diff --git a/LICENSE-text.html b/LICENSE-text.html index 2b91a40..3692ffe 100644 --- a/LICENSE-text.html +++ b/LICENSE-text.html @@ -1,5 +1,5 @@ -License • SomaDataIOLicense • SomaDataIO @@ -28,6 +28,9 @@ + @@ -68,7 +84,7 @@ -
YEAR: 2015-2023
+
YEAR: 2023
 COPYRIGHT HOLDER: SomaLogic Operating Co., Inc.
 
diff --git a/LICENSE.html b/LICENSE.html index 2aac7dc..931ddc9 100644 --- a/LICENSE.html +++ b/LICENSE.html @@ -1,5 +1,5 @@ -MIT License • SomaDataIOMIT License • SomaDataIO @@ -28,6 +28,9 @@ + @@ -70,11 +86,10 @@
-

SomaDataIO™

Copyright © 2023 SomaLogic Operating Co., Inc.

-

Permission is hereby granted, free of charge, to any person obtaining a copy of the SomaDataIO software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions outlined below. Further, SomaDataIO and SomaLogic are trademarks owned by SomaLogic Operating Co., Inc. No license is hereby granted to these trademarks other than for purposes of identifying the origin or source of the Software.

+

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES, WHETHER DIRECT OR INDIRECT, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

diff --git a/SECURITY.html b/SECURITY.html index dbef93c..5785cb7 100644 --- a/SECURITY.html +++ b/SECURITY.html @@ -1,5 +1,5 @@ -Security Policy • SomaDataIOSecurity Policy • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/SUPPORT.html b/SUPPORT.html index b778429..2b1f23a 100644 --- a/SUPPORT.html +++ b/SUPPORT.html @@ -1,5 +1,5 @@ -Getting help with SomaDataIO • SomaDataIOGetting help with SomaDataIO • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/articles/SomaDataIO.html b/articles/SomaDataIO.html index 6c53f55..42df27f 100644 --- a/articles/SomaDataIO.html +++ b/articles/SomaDataIO.html @@ -14,9 +14,9 @@ - - - + + + @@ -54,6 +54,9 @@ + @@ -109,8 +125,8 @@

This document accompanies the SomaDataIO R package, which loads and exports ‘SomaScan’ data via the SomaLogic Operating Co., -Inc. proprietary text file called an ADAT (*.adat). For -file format see here. +Inc. structured text file called an ADAT (*.adat). For file +format see here. The package also exports auxiliary functions for manipulating, wrangling, and extracting relevant information from an ADAT object once in memory. Basic familiarity with the R environment is assumed, as is @@ -134,7 +150,7 @@

Main Features (I/O)?SeqId analyte (feature) matching.
  • -dplyr and tidyr verb S3 methods for the +dplyr and tidyr verb S3 methods for the soma_adat class.
  • ?rownames helpers that do not break diff --git a/articles/cli-merge-tool.html b/articles/cli-merge-tool.html index 471cede..9187a6c 100644 --- a/articles/cli-merge-tool.html +++ b/articles/cli-merge-tool.html @@ -15,9 +15,9 @@ - - - + + + @@ -56,6 +56,9 @@
  • + @@ -247,7 +263,7 @@

    Standard Syntaxboth files, (ADAT and CSV), has the same variable name:

    # change directory to the analysis path
    -cd /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T//RtmpJ3UUi0/somascan-2ee37121ba1d
    +cd /var/folders/3s/vfzpb5r51gs6y328rmlgzm7c0000gn/T//RtmpI9f3Pa/somascan-1226637a3dc0
     
     # run the Rscript:
     # - we recommend using the --vanilla flag
    diff --git a/articles/index.html b/articles/index.html
    index 7b928ef..783f7e5 100644
    --- a/articles/index.html
    +++ b/articles/index.html
    @@ -1,5 +1,5 @@
     
    -Articles • SomaDataIOArticles • SomaDataIO
    @@ -28,6 +28,9 @@
       
       
     
    +
     
    @@ -73,6 +89,12 @@ 

    Loading and Wrangling

    Loading and Wrangling 'SomaScan'

    How to load and manipulate a ‘SomaScan’ flat text file into and R environment.

    +
    Safely Rename Data Frames
    +

    How to safely and reliably rename variable names of a data frame (or soma_adat) in R.

    +
    Safely Map Values via dplyr::left_join()
    +

    How to safely and reliably map variable between data frame columns.

    +
    Common train-test data setups
    +

    Simple code syntax for common machine learning (ML) training vs test setups in R.

    Command Line Merge Tool

    diff --git a/articles/loading-and-wrangling.html b/articles/loading-and-wrangling.html index d71901f..6962796 100644 --- a/articles/loading-and-wrangling.html +++ b/articles/loading-and-wrangling.html @@ -15,9 +15,9 @@ - - - + + + @@ -56,6 +56,9 @@ + @@ -254,11 +270,11 @@

    Debugging
     read_adat(f, debug = TRUE)
     #> ══ Parsing Specs ═══════════════════════════════════════════════════════════════
    -#>  Table Begin               45
    -#>  Col.Meta Start            46
    -#>  Col.Meta Shift            35
    -#>  Header Row                66
    -#>  Rows of the Col Meta      46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65
    +#> Table Begin               45
    +#> Col.Meta Start            46
    +#> Col.Meta Shift            35
    +#> Header Row                66
    +#> Rows of the Col Meta      46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65
     #> ── Col Meta ────────────────────────────────────────────────────────────── 20 ──
     #>  SeqId, SeqIdVersion, SomaId, TargetFullName, Target, UniProt,
     #>  EntrezGeneID, EntrezGeneSymbol, Organism, Units, Type, Dilution,
    @@ -513,7 +529,7 @@ 

    Writing a soma_adat write_adat(my_adat, file = tempfile("my-adat-", fileext = ".adat")) #> ADAT passed all checks and traps. -#> ADAT written to: '/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T//RtmpGelU2w/my-adat-300b43ae59bb.adat'

    +#> ADAT written to: '/var/folders/3s/vfzpb5r51gs6y328rmlgzm7c0000gn/T//Rtmp9BZAqb/my-adat-12515a36fddc.adat'

    diff --git a/articles/safely-map-values-join.html b/articles/safely-map-values-join.html new file mode 100644 index 0000000..e53fcae --- /dev/null +++ b/articles/safely-map-values-join.html @@ -0,0 +1,263 @@ + + + + + + + + +Safely Map Values via dplyr::left_join() • SomaDataIO + + + + + + + + + + + + + + + + + + + Skip to content + + +
    + + + + +
    +
    + + + +
    +

    Introduction +

    +

    Mapping values in one column to specific values in another (new) +column of a data frame is a common task in data science. Doing so +safely is often a struggle. There are some existing methods in +the tidyverse that are useful, but in my opinion come with +some drawbacks:

    +
      +
    • +dplyr::recode() +
        +
      • can be clunky to implement -> LHS/RHS syntax difficult (for me) +to remember
      • +
      +
    • +
    • +dplyr::case_when() +
        +
      • complex syntax -> difficult to remember; overkill for mapping +purposes
      • +
      +
    • +
    +

    Below is what I see is a safe way to map (re-code) values in +an existing column to a new column.

    +
    +
    +

    Mapping Example +

    +
    +# wish to map values of 'x'
    +df <- withr::with_seed(101, {
    +  data.frame(id    = 1:10L,
    +             value = rnorm(10),
    +             x     = sample(letters[1:3L], 10, replace = TRUE)
    +  )
    +})
    +df
    +#>    id      value x
    +#> 1   1 -0.3260365 b
    +#> 2   2  0.5524619 c
    +#> 3   3 -0.6749438 c
    +#> 4   4  0.2143595 a
    +#> 5   5  0.3107692 c
    +#> 6   6  1.1739663 a
    +#> 7   7  0.6187899 b
    +#> 8   8 -0.1127343 a
    +#> 9   9  0.9170283 a
    +#> 10 10 -0.2232594 c
    +
    +# create a [n x 2] lookup-table (aka hash map)
    +# n = no. values to map
    +# x = existing values to map
    +# new_x = new mapped values for each `x`
    +map <- data.frame(x = letters[1:4L], new_x = c("cat", "dog", "bird", "turtle"))
    +map
    +#>   x  new_x
    +#> 1 a    cat
    +#> 2 b    dog
    +#> 3 c   bird
    +#> 4 d turtle
    +
    +# use `dplyr::left_join()`
    +# note: 'turtle' is absent because `d` is not in `df$x` (thus ignored)
    +dplyr::left_join(df, map)
    +#> Joining with `by = join_by(x)`
    +#>    id      value x new_x
    +#> 1   1 -0.3260365 b   dog
    +#> 2   2  0.5524619 c  bird
    +#> 3   3 -0.6749438 c  bird
    +#> 4   4  0.2143595 a   cat
    +#> 5   5  0.3107692 c  bird
    +#> 6   6  1.1739663 a   cat
    +#> 7   7  0.6187899 b   dog
    +#> 8   8 -0.1127343 a   cat
    +#> 9   9  0.9170283 a   cat
    +#> 10 10 -0.2232594 c  bird
    +
    +
    +

    Un-mapped Values -> NAs +

    +

    Notice that b maps to NA. This is because +the mapping object now lacks a mapping for b (compare to +row 2 above). Using a slightly different syntax via +tibble::enframe().

    +
    +# note: `b` is missing in the map
    +map_vec <- c(a = "cat", c = "bird", d = "turtle")
    +map2 <- tibble::enframe(map_vec, name = "x", value = "new_x")
    +map2
    +#> # A tibble: 3 × 2
    +#>   x     new_x 
    +#>   <chr> <chr> 
    +#> 1 a     cat   
    +#> 2 c     bird  
    +#> 3 d     turtle
    +
    +# note: un-mapped values generate NAs: `b -> NA`
    +dplyr::left_join(df, map2, by = "x")
    +#>    id      value x new_x
    +#> 1   1 -0.3260365 b  <NA>
    +#> 2   2  0.5524619 c  bird
    +#> 3   3 -0.6749438 c  bird
    +#> 4   4  0.2143595 a   cat
    +#> 5   5  0.3107692 c  bird
    +#> 6   6  1.1739663 a   cat
    +#> 7   7  0.6187899 b  <NA>
    +#> 8   8 -0.1127343 a   cat
    +#> 9   9  0.9170283 a   cat
    +#> 10 10 -0.2232594 c  bird
    +
    +
    +
    +
    + + + +
    + + + diff --git a/articles/safely-rename-df.html b/articles/safely-rename-df.html new file mode 100644 index 0000000..1fe2d9d --- /dev/null +++ b/articles/safely-rename-df.html @@ -0,0 +1,268 @@ + + + + + + + + +Safely Rename Data Frames • SomaDataIO + + + + + + + + + + + + + + + + + + + Skip to content + + +
    + + + + +
    +
    + + + +
    +

    Introduction +

    +

    Renaming variables/features of a data frame (or tibble) +is a common task in data science. Doing so safely is often a +struggle. This can be achieved safely via the +dplyr::rename() function via 2 steps:

    +
      +
    1. Set up the mapping in either a named vector
    2. +
    3. Apply the dplyr::rename() function via !!! +syntax
    4. +
    5. Alternatively, roll-your-own rename() function
    6. +
    +
      +
    • +Note: all entries in the mapping (i.e. key) object +must be present as names in the data frame +object.
    • +
    +
    +

    Example with mtcars +

    +
    +# Create map/key of the names to map
    +key <- c(MPG = "mpg", CARB = "carb")   # named vector
    +key
    +#>    MPG   CARB 
    +#>  "mpg" "carb"
    +
    +# rename `mtcars`
    +rename(mtcars, !!! key) |> head()
    +#>                    MPG cyl disp  hp drat    wt  qsec vs am gear CARB
    +#> Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    +#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    +#> Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    +#> Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    +#> Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    +#> Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    +
    +
    +

    A SomaScan example (example_data) +

    +

    Occasionally it might be required to rename AptNames +(seq.1234.56) -> SeqIds +(1234-56) when analyzing SomaScan data.

    +
    +getAnalytes(example_data) |> 
    +  head()
    +#> [1] "seq.10000.28" "seq.10001.7"  "seq.10003.15" "seq.10006.25"
    +#> [5] "seq.10008.43" "seq.10011.65"
    +
    +# create map (named vector)
    +key2 <- getAnalytes(example_data)  
    +names(key2) <- getSeqId(key2)     # re-name `seq.XXXX` -> SeqIds
    +key2 <- c(key2, ID = "SampleId")  # SampleId -> ID
    +head(key2, 10L)
    +#>        10000-28         10001-7        10003-15        10006-25 
    +#>  "seq.10000.28"   "seq.10001.7"  "seq.10003.15"  "seq.10006.25" 
    +#>        10008-43        10011-65         10012-5        10013-34 
    +#>  "seq.10008.43"  "seq.10011.65"   "seq.10012.5"  "seq.10013.34" 
    +#>        10014-31       10015-119 
    +#>  "seq.10014.31" "seq.10015.119"
    +
    +# rename analytes of `example_data`
    +getAnalytes(example_data) |>
    +  head(10L)
    +#>  [1] "seq.10000.28"  "seq.10001.7"   "seq.10003.15"  "seq.10006.25" 
    +#>  [5] "seq.10008.43"  "seq.10011.65"  "seq.10012.5"   "seq.10013.34" 
    +#>  [9] "seq.10014.31"  "seq.10015.119"
    +
    +new <- rename(example_data, !!! key2)
    +
    +getAnalytes(new) |>
    +  head(10L)
    +#>  [1] "10000-28"  "10001-7"   "10003-15"  "10006-25"  "10008-43" 
    +#>  [6] "10011-65"  "10012-5"   "10013-34"  "10014-31"  "10015-119"
    +
    +
    +

    Alternative to dplyr +

    +

    If you prefer to avoid the dplyr import/dependency, you +can achieve a similar result with similar syntax by writing your own +renaming function:

    +
    +rename2 <- function (.data, ...) {
    +  map <- c(...)
    +  loc <- setNames(match(map, names(.data), nomatch = 0L), names(map))
    +  loc <- loc[loc > 0L]
    +  newnames <- names(.data)
    +  newnames[loc] <- names(loc)
    +  setNames(.data, newnames)
    +}
    +

    Now, with similar syntax (but cannot use +!!!):

    +
    +# rename `mtcars` in-line
    +rename2(mtcars, MPG = "mpg", CARB = "carb") |>
    +  head()
    +#>                    MPG cyl disp  hp drat    wt  qsec vs am gear CARB
    +#> Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    +#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    +#> Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    +#> Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    +#> Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    +#> Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    +
    +# rename `mtcars` via named `key`
    +rename2(mtcars, key) |>
    +  head()
    +#>                    MPG cyl disp  hp drat    wt  qsec vs am gear CARB
    +#> Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    +#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    +#> Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    +#> Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    +#> Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    +#> Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    +
    +
    +
    +
    + + + +
    + + + diff --git a/articles/stat-binary-classification.html b/articles/stat-binary-classification.html index 25a5f71..a362e16 100644 --- a/articles/stat-binary-classification.html +++ b/articles/stat-binary-classification.html @@ -15,9 +15,9 @@ - - - + + + @@ -56,6 +56,9 @@ + diff --git a/articles/stat-linear-regression.html b/articles/stat-linear-regression.html index ea4b66a..add70f1 100644 --- a/articles/stat-linear-regression.html +++ b/articles/stat-linear-regression.html @@ -15,9 +15,9 @@ - - - + + + @@ -56,6 +56,9 @@ + diff --git a/articles/stat-three-group-analysis-anova.html b/articles/stat-three-group-analysis-anova.html index cce6b3b..658d90d 100644 --- a/articles/stat-three-group-analysis-anova.html +++ b/articles/stat-three-group-analysis-anova.html @@ -15,9 +15,9 @@ - - - + + + @@ -56,6 +56,9 @@ + diff --git a/articles/stat-two-group-comparison.html b/articles/stat-two-group-comparison.html index d153098..1b48d62 100644 --- a/articles/stat-two-group-comparison.html +++ b/articles/stat-two-group-comparison.html @@ -15,9 +15,9 @@ - - - + + + @@ -56,6 +56,9 @@ + diff --git a/articles/train-test-setup.html b/articles/train-test-setup.html new file mode 100644 index 0000000..497573b --- /dev/null +++ b/articles/train-test-setup.html @@ -0,0 +1,259 @@ + + + + + + + + +Common train-test data setups • SomaDataIO + + + + + + + + + + + + + + + + + + + Skip to content + + +
    + + + + +
    +
    + + + +
    +

    Introduction +

    +

    Most machine learning (ML) analyses require a random split of +original data into training/test data sets, where the model is fit on +the training data and performance is evaluated on the test data set. The +split proportions can vary, though 80/20 training/test is common. It +often depends on the number of available samples and the class +distribution in the splits.

    +

    Among many alternatives, there are 3 common approaches, all are +equally viable and depend on the analyst’s weighing of pros/cons of +each. I recommend one of these below:

    +
      +
    1. base R data frame indexing with [sample()] and [ +
    2. +
    3. use dplyr::slice_sample() or +dplyr::sample_frac() in combination with +dplyr::anti_join() +
    4. +
    5. use the rsample package +(not demonstrated)
    6. +
    +
    +
    +

    Original Raw Data +

    +

    In most analyses, you typically start with a raw original data set +that you must split randomly into training and test sets.

    +
    +raw <- SomaDataIO::rn2col(head(mtcars, 10L), "CarModel") |>
    +  SomaDataIO::add_rowid("id") |> # set up identifier variable for the join()
    +  tibble::as_tibble()
    +raw
    +#> # A tibble: 10 × 13
    +#>       id CarModel          mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
    +#>    <int> <chr>           <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    +#>  1     1 Mazda RX4        21       6  160    110  3.9   2.62  16.5     0     1     4     4
    +#>  2     2 Mazda RX4 Wag    21       6  160    110  3.9   2.88  17.0     0     1     4     4
    +#>  3     3 Datsun 710       22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
    +#>  4     4 Hornet 4 Drive   21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
    +#>  5     5 Hornet Sportab…  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
    +#>  6     6 Valiant          18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
    +#>  7     7 Duster 360       14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
    +#>  8     8 Merc 240D        24.4     4  147.    62  3.69  3.19  20       1     0     4     2
    +#>  9     9 Merc 230         22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
    +#> 10    10 Merc 280         19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
    +
    +
    +
    +

    Option #1: sample() +

    +
    +n     <- nrow(raw)
    +idx   <- withr::with_seed(1, sample(1:n, floor(n / 2))) # sample random 50% (n = 5)
    +train <- raw[idx, ]
    +test  <- raw[-idx, ]
    +train
    +#> # A tibble: 5 × 13
    +#>      id CarModel         mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
    +#>   <int> <chr>          <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    +#> 1     9 Merc 230        22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
    +#> 2     4 Hornet 4 Drive  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
    +#> 3     7 Duster 360      14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
    +#> 4     1 Mazda RX4       21       6  160    110  3.9   2.62  16.5     0     1     4     4
    +#> 5     2 Mazda RX4 Wag   21       6  160    110  3.9   2.88  17.0     0     1     4     4
    +
    +test
    +#> # A tibble: 5 × 13
    +#>      id CarModel           mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
    +#>   <int> <chr>            <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    +#> 1     3 Datsun 710        22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
    +#> 2     5 Hornet Sportabo…  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
    +#> 3     6 Valiant           18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
    +#> 4     8 Merc 240D         24.4     4  147.    62  3.69  3.19  20       1     0     4     2
    +#> 5    10 Merc 280          19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
    +
    +
    +

    Option #2: anti_join() +

    +
    +# sample random 50% (n = 5)
    +train <- withr::with_seed(1, dplyr::slice_sample(raw, n = floor(n / 2)))
    +
    +# or using `dplyr::sample_frac()`
    +# train <- withr::with_seed(1, dplyr::sample_frac(raw, size = 0.5))
    +
    +# use anti_join() to get the sample setdiff
    +test <- dplyr::anti_join(raw, train, by = "id")
    +train
    +#> # A tibble: 5 × 13
    +#>      id CarModel         mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
    +#>   <int> <chr>          <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    +#> 1     9 Merc 230        22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
    +#> 2     4 Hornet 4 Drive  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
    +#> 3     7 Duster 360      14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
    +#> 4     1 Mazda RX4       21       6  160    110  3.9   2.62  16.5     0     1     4     4
    +#> 5     2 Mazda RX4 Wag   21       6  160    110  3.9   2.88  17.0     0     1     4     4
    +
    +test
    +#> # A tibble: 5 × 13
    +#>      id CarModel           mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
    +#>   <int> <chr>            <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    +#> 1     3 Datsun 710        22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
    +#> 2     5 Hornet Sportabo…  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
    +#> 3     6 Valiant           18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
    +#> 4     8 Merc 240D         24.4     4  147.    62  3.69  3.19  20       1     0     4     2
    +#> 5    10 Merc 280          19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
    +
    +
    +
    +
    + + + +
    + + + diff --git a/authors.html b/authors.html index ae349ca..62696d1 100644 --- a/authors.html +++ b/authors.html @@ -1,5 +1,5 @@ -Authors and Citation • SomaDataIOAuthors and Citation • SomaDataIO @@ -28,6 +28,9 @@ + @@ -87,13 +103,14 @@

    Citation

    Field S (2023). SomaDataIO: Input/Output 'SomaScan' Data. -https://somalogic.github.io/SomaDataIO/, https://somalogic.com. +R package version 6.0.0, https://somalogic.com, https://somalogic.github.io/SomaDataIO/.

    @Manual{,
       title = {SomaDataIO: Input/Output 'SomaScan' Data},
       author = {Stu Field},
       year = {2023},
    -  note = {https://somalogic.github.io/SomaDataIO/, https://somalogic.com},
    +  note = {R package version 6.0.0, https://somalogic.com},
    +  url = {https://somalogic.github.io/SomaDataIO/},
     }
    diff --git a/logo.png b/logo.png index cb996ca..89395fa 100644 Binary files a/logo.png and b/logo.png differ diff --git a/news/index.html b/news/index.html index 06ffcdb..60b6fe2 100644 --- a/news/index.html +++ b/news/index.html @@ -1,5 +1,5 @@ -Changelog • SomaDataIOChangelog • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/pkgdown.yml b/pkgdown.yml index efee6a8..1faf089 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -9,7 +9,10 @@ articles: stat-two-group-comparison: stat-two-group-comparison.html cli-merge-tool: cli-merge-tool.html loading-and-wrangling: loading-and-wrangling.html -last_built: 2023-06-07T14:37Z + safely-map-values-join: safely-map-values-join.html + safely-rename-df: safely-rename-df.html + train-test-setup: train-test-setup.html +last_built: 2023-12-14T18:54Z urls: reference: https://somalogic.github.io/SomaDataIO/reference article: https://somalogic.github.io/SomaDataIO/articles diff --git a/pull_request_template.html b/pull_request_template.html index 3d40094..60f2b7a 100644 --- a/pull_request_template.html +++ b/pull_request_template.html @@ -1,5 +1,5 @@ -NA • SomaDataIONA • SomaDataIO @@ -28,6 +28,9 @@ + @@ -122,7 +138,7 @@

    Reviewer by DepartmentLegal @SLbmangum LICENSE -Marketing +Product @kmurugesan14 Documentation Regulatory diff --git a/reference/Col.Meta.html b/reference/Col.Meta.html index fb17728..b6a174b 100644 --- a/reference/Col.Meta.html +++ b/reference/Col.Meta.html @@ -7,7 +7,7 @@ fields and their descriptions. Use getAnalyteInfo() to obtain an object containing this information for programmatic analyses, and use getMeta() to obtain the column names representing the -row-specific meta data about the samples (see section below).">Analyte Annotations, Col.Meta, and Row Info — Col.Meta • SomaDataIOAnalyte Annotations, Col.Meta, and Row Info — Col.Meta • SomaDataIOArticles + diff --git a/reference/SeqId.html b/reference/SeqId.html index 1cf7de1..95adad0 100644 --- a/reference/SeqId.html +++ b/reference/SeqId.html @@ -11,7 +11,7 @@ specific analyte and therefore versions are no longer provided (though they may be present in legacy ADATs). The tools below enable users to extract, test, identify, compare, -and manipulate SeqIds across assay runs and/or versions.'>Working with SomaLogic SeqIds — SeqId • SomaDataIOWorking with SomaLogic SeqIds — SeqId • SomaDataIO + Safely Rename Data Frames + Safely Map Values via dplyr::left_join() + Common train-test data setups Command Line Merge Tool More articles... @@ -69,6 +72,19 @@

    Linear Regression + diff --git a/reference/SomaDataIO-deprecated.html b/reference/SomaDataIO-deprecated.html index 9f08d25..4a18fe2 100644 --- a/reference/SomaDataIO-deprecated.html +++ b/reference/SomaDataIO-deprecated.html @@ -2,7 +2,7 @@ Deprecated function(s) of the SomaDataIO package — SomaDataIO-deprecated • SomaDataIODeprecated function(s) of the SomaDataIO package — SomaDataIO-deprecated • SomaDataIOSomaDataIO: Input/Output 'SomaScan' Data — SomaDataIO-package • SomaDataIO @@ -30,6 +30,9 @@ + @@ -73,7 +89,7 @@

    -

    Load and export 'SomaScan' data via the 'SomaLogic Operating Co., Inc.' proprietary text file called an ADAT ('*.adat'). For file format see https://github.com/SomaLogic/SomaLogic-Data/blob/master/README.md. The package also exports auxiliary functions for manipulating, wrangling, and extracting relevant information from an ADAT object once in memory.

    +

    Load and export 'SomaScan' data via the 'SomaLogic Operating Co., Inc.' structured text file called an ADAT ('*.adat'). For file format see https://github.com/SomaLogic/SomaLogic-Data/blob/master/README.md. The package also exports auxiliary functions for manipulating, wrangling, and extracting relevant information from an ADAT object once in memory.

    diff --git a/reference/SomaScanObjects.html b/reference/SomaScanObjects.html index ef6ce35..5b82e3b 100644 --- a/reference/SomaScanObjects.html +++ b/reference/SomaScanObjects.html @@ -3,7 +3,7 @@ SomaLogic customers with example data to enable analysis preparation prior to receipt of SomaScan data, and also for those generally curious about the SomaScan data deliverable. It is not intended to be used as a control -group for studies or provide any metrics for SomaScan data in general.">Example Data and Objects — SomaScanObjects • SomaDataIOExample Data and Objects — SomaScanObjects • SomaDataIOArticles + diff --git a/reference/adat2eSet.html b/reference/adat2eSet.html index 9e0328b..26ddfaa 100644 --- a/reference/adat2eSet.html +++ b/reference/adat2eSet.html @@ -2,7 +2,7 @@ Convert ADAT to ExpressionSet Object — adat2eSet • SomaDataIOConvert ADAT to ExpressionSet Object — adat2eSet • SomaDataIOAdd Attributes to soma_adat Objects — addAttributes • SomaDataIO + Skip to content + + +
    +
    +
    + +
    +

    Adds a set of attributes, typically "Header.Meta" and "Col.Meta", +to a data.frame, tibble, soma_adat or similar tabular object. +Existing attributes data are not over-written. +Typically untouched are:

    • names

    • +
    • class

    • +
    • row.names

    • +
    + +
    +

    Usage

    +
    addAttributes(data, new.atts)
    +
    + +
    +

    Arguments

    +
    data
    +

    The receiving data.frame object for new attributes.

    + + +
    new.atts
    +

    A named list object containing new attributes +to add to the existing ones.

    + +
    +
    +

    Value

    + + +

    A data frame object corresponding to data but with the +attributes of new.atts grafted on to it. +Existing attribute names are not over-written.

    +
    +
    +

    See also

    + +
    +
    +

    Author

    +

    Stu Field

    +
    + +
    + + +
    + + diff --git a/reference/addClass.html b/reference/addClass.html new file mode 100644 index 0000000..2139ca0 --- /dev/null +++ b/reference/addClass.html @@ -0,0 +1,155 @@ + +Add a Class to an Object — addClass • SomaDataIO + Skip to content + + +
    +
    +
    + +
    +

    Utility to add (prepend) a class(es) to existing objects.

    +
    + +
    +

    Usage

    +
    addClass(x, class)
    +
    + +
    +

    Arguments

    +
    x
    +

    The object to receive new class(es).

    + + +
    class
    +

    Character. The name of additional class(es).

    + +
    +
    +

    Value

    + + +

    An object with new classes.

    +
    +
    +

    See also

    + +
    +
    +

    Author

    +

    Stu Field

    +
    + +
    +

    Examples

    +
    class(iris)
    +#> [1] "data.frame"
    +
    +addClass(iris, "new") |> class()
    +#> [1] "new"        "data.frame"
    +
    +addClass(iris, c("A", "B")) |> class()    # 2 classes
    +#> [1] "A"          "B"          "data.frame"
    +
    +addClass(iris, c("A", "data.frame")) |> class()    # no duplicates
    +#> [1] "A"          "data.frame"
    +
    +addClass(iris, c("data.frame", "A")) |> class()    # re-orders if exists
    +#> [1] "data.frame" "A"         
    +
    +
    +
    + + +
    + + diff --git a/reference/cleanNames.html b/reference/cleanNames.html new file mode 100644 index 0000000..cb3a26a --- /dev/null +++ b/reference/cleanNames.html @@ -0,0 +1,163 @@ + +Clean Up Character String — cleanNames • SomaDataIO + Skip to content + + +
    +
    +
    + +
    +

    Often the names, particularly within soma_adat objects, +are messy due to varying inputs, this function attempts to remedy this by +removing the following:

    • trailing/leading/internal whitespace

    • +
    • non-alphanumeric strings (except underscores)

    • +
    • duplicated internal dots (..), (...), etc.

    • +
    • SomaScan normalization scale factor format

    • +
    + +
    +

    Usage

    +
    cleanNames(x)
    +
    + +
    +

    Arguments

    +
    x
    +

    Character. String to clean up.

    + +
    +
    +

    Value

    + + +

    A cleaned up character string.

    +
    +
    +

    See also

    + +
    +
    +

    Author

    +

    Stu Field

    +
    + +
    +

    Examples

    +
    cleanNames("    sdkfj...sdlkfj.sdfii4994### ")
    +#> [1] "sdkfj.sdlkfj.sdfii4994"
    +
    +cleanNames("Hyb..Scale")
    +#> [1] "HybControlNormScale"
    +
    +
    +
    + + +
    + + diff --git a/reference/diffAdats.html b/reference/diffAdats.html index f972a0b..db8b230 100644 --- a/reference/diffAdats.html +++ b/reference/diffAdats.html @@ -1,7 +1,7 @@ Diff Two ADAT Objects — diffAdats • SomaDataIODiff Two ADAT Objects — diffAdats • SomaDataIOGet ADAT Version — getAdatVersion • SomaDataIO + Skip to content + + +
    +
    +
    + +
    +

    Get the ADAT version number from a parsed ADAT header.

    +
    + +
    +

    Usage

    +
    getAdatVersion(x)
    +
    + +
    +

    Arguments

    +
    x
    +

    The "Header.Meta" list of an ADAT object attributes.

    + +
    +
    +

    Value

    + + +

    Returns the key-value of the ADAT version as a string.

    +
    +
    +

    Author

    +

    Stu Field

    +
    + +
    +

    Examples

    +
    header <- attributes(example_data)$Header.Meta
    +getAdatVersion(header)
    +#> [1] "1.2"
    +#> attr(,"raw_key")
    +#> [1] "!Version"
    +
    +header$HEADER$Version <- "1.0"
    +getAdatVersion(header)
    +#> [1] "1.0"
    +
    +
    +
    + + +
    + + diff --git a/reference/getAnalyteInfo-1.png b/reference/getAnalyteInfo-1.png index f52b853..09c10ff 100644 Binary files a/reference/getAnalyteInfo-1.png and b/reference/getAnalyteInfo-1.png differ diff --git a/reference/getAnalyteInfo.html b/reference/getAnalyteInfo.html index e151937..2b0ccac 100644 --- a/reference/getAnalyteInfo.html +++ b/reference/getAnalyteInfo.html @@ -6,7 +6,7 @@ manipulation and indexing of analyte annotation information. Most importantly, the analyte column names of the soma_adat (e.g. seq.XXXX.XX) become the AptName column of the lookup table and -represents the key index between the table and soma_adat from which it comes.'>Get Analyte Annotation Information — getAnalyteInfo • SomaDataIOGet Analyte Annotation Information — getAnalyteInfo • SomaDataIO + Safely Rename Data Frames + Safely Map Values via dplyr::left_join() + Common train-test data setups Command Line Merge Tool More articles... @@ -59,6 +62,19 @@ Linear Regression + @@ -236,22 +252,22 @@

    Examplesop <- par(mfrow = c(2, 3)) sapply(feats, function(.x) plot(1:10, main = tg[[.x]])) -#> $seq.10364.6 +#> $seq.10939.16 #> NULL #> -#> $seq.11438.6 +#> $seq.11646.4 #> NULL #> -#> $seq.7881.244 +#> $seq.7173.141 #> NULL #> -#> $seq.12859.33 +#> $seq.7963.36 #> NULL #> -#> $seq.3413.50 +#> $seq.13613.23 #> NULL #> -#> $seq.15585.304 +#> $seq.3866.7 #> NULL #> par(op) diff --git a/reference/getAnalytes.html b/reference/getAnalytes.html index 0c46c74..730e6d4 100644 --- a/reference/getAnalytes.html +++ b/reference/getAnalytes.html @@ -14,7 +14,7 @@ #&gt; [1] getMeta.character getMeta.data.frame getMeta.default getMeta.list #&gt; [5] getMeta.matrix getMeta.soma_adat #&gt; see '?methods' for accessing help and source code -">Get Analytes — getAnalytes • SomaDataIOGet Analytes — getAnalytes • SomaDataIOArticles + diff --git a/reference/groupGenerics.html b/reference/groupGenerics.html index 23de5d8..3f5e4c3 100644 --- a/reference/groupGenerics.html +++ b/reference/groupGenerics.html @@ -3,7 +3,7 @@ to the RFU data only of soma_adat objects. The clinical meta data are not transformed and remain unmodified in the returned object (Math() and Ops()) or are ignored for the -Summary() group. See groupGeneric().">Group Generics for soma_adat Class Objects — groupGenerics • SomaDataIOGroup Generics for soma_adat Class Objects — groupGenerics • SomaDataIOArticles + diff --git a/reference/index.html b/reference/index.html index b292702..816a886 100644 --- a/reference/index.html +++ b/reference/index.html @@ -1,5 +1,5 @@ -Function reference • SomaDataIOFunction reference • SomaDataIO @@ -28,6 +28,9 @@ + @@ -212,6 +228,37 @@

    Expression Data
    Convert to Long Format
    +

    Helpers

    + +

    Accessor functions to add, modify, or retreive attribute information. Typically used internally but are exported for user convenience.

    + + +
    + + + + +
    + + addAttributes() +
    +
    Add Attributes to soma_adat Objects
    +
    + + addClass() +
    +
    Add a Class to an Object
    +
    + + cleanNames() +
    +
    Clean Up Character String
    +
    + + getAdatVersion() +
    +
    Get ADAT Version
    +

    Data Objects

    Objects provided with SomaDataIO.

    diff --git a/reference/is_intact_attr.html b/reference/is_intact_attr.html index f0f2fda..cf77107 100644 --- a/reference/is_intact_attr.html +++ b/reference/is_intact_attr.html @@ -14,7 +14,7 @@ "SeqId", "Target", "Units", and "Dilution" -If any of the above they are altered or missing, FALSE is returned.'>Are Attributes Intact? — is_intact_attr • SomaDataIOAre Attributes Intact? — is_intact_attr • SomaDataIO + Safely Rename Data Frames + Safely Map Values via dplyr::left_join() + Common train-test data setups Command Line Merge Tool More articles... @@ -75,6 +78,19 @@ Linear Regression
    + diff --git a/reference/is_seqFormat.html b/reference/is_seqFormat.html index a734847..3e920a7 100644 --- a/reference/is_seqFormat.html +++ b/reference/is_seqFormat.html @@ -1,5 +1,5 @@ -Test AptName Format — is_seqFormat • SomaDataIOTest AptName Format — is_seqFormat • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/reference/lift_adat.html b/reference/lift_adat.html index 9e88f31..e4dbc59 100644 --- a/reference/lift_adat.html +++ b/reference/lift_adat.html @@ -6,7 +6,7 @@ (aka "lifting" or "bridging") to bring RFUs into a comparable space. This is accomplished by applying an analyte-specific scalar to each analyte RFU (ADAT column). The scalar values themselves are typically provided -via *.xlsx file, which can be parsed via read_annotations(). See Details.'>Lift an ADAT Between Assay Versions — lift_adat • SomaDataIOLift an ADAT Between Assay Versions — lift_adat • SomaDataIO + Safely Rename Data Frames + Safely Map Values via dplyr::left_join() + Common train-test data setups Command Line Merge Tool More articles... @@ -59,6 +62,19 @@

    Linear Regression + diff --git a/reference/loadAdatsAsList.html b/reference/loadAdatsAsList.html index 43398e1..be9c955 100644 --- a/reference/loadAdatsAsList.html +++ b/reference/loadAdatsAsList.html @@ -4,7 +4,7 @@ collapseAdats() concatenates a list of ADATs from loadAdatsAsList(), while maintaining the relevant attribute entries (mainly the HEADER element). This makes writing out the final object possible without the -loss of HEADER information.">Load ADAT files as a list — loadAdatsAsList • SomaDataIOLoad ADAT files as a list — loadAdatsAsList • SomaDataIOArticles + diff --git a/reference/parseHeader.html b/reference/parseHeader.html index 8abd8a6..0422536 100644 --- a/reference/parseHeader.html +++ b/reference/parseHeader.html @@ -1,5 +1,5 @@ -SomaLogic ADAT parser — parseHeader • SomaDataIOSomaLogic ADAT parser — parseHeader • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/reference/pipe.html b/reference/pipe.html index fc51203..ca3a50e 100644 --- a/reference/pipe.html +++ b/reference/pipe.html @@ -1,5 +1,5 @@ -Pipe operator — %>% • SomaDataIOPipe operator — %>% • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/reference/pivotExpressionSet.html b/reference/pivotExpressionSet.html index 08f913e..db26e3b 100644 --- a/reference/pivotExpressionSet.html +++ b/reference/pivotExpressionSet.html @@ -1,7 +1,7 @@ Convert to Long Format — pivotExpressionSet • SomaDataIOConvert to Long Format — pivotExpressionSet • SomaDataIORead (Load) SomaLogic ADATs — read_adat • SomaDataIOArticles + diff --git a/reference/read_annotations.html b/reference/read_annotations.html index 2a6bc9f..4e80727 100644 --- a/reference/read_annotations.html +++ b/reference/read_annotations.html @@ -1,5 +1,5 @@ -Import a SomaLogic Annotations File — read_annotations • SomaDataIOImport a SomaLogic Annotations File — read_annotations • SomaDataIO @@ -28,6 +28,9 @@ + diff --git a/reference/reexports.html b/reference/reexports.html index ed6fd25..25cb653 100644 --- a/reference/reexports.html +++ b/reference/reexports.html @@ -10,7 +10,7 @@ separate, unite -">Objects exported from other packages — reexports • SomaDataIOObjects exported from other packages — reexports • SomaDataIOArticles + diff --git a/reference/rownames.html b/reference/rownames.html index 807bb80..2e0eac6 100644 --- a/reference/rownames.html +++ b/reference/rownames.html @@ -6,7 +6,7 @@ Does not import any external packages, modify the environment, or change the object (other than the desired column). When using col2rn(), if explicit row names exist, they are overwritten with a warning. add_rowid() -does not affect row names, which differs from tibble::rowid_to_column().">Helpers for Working With Row Names — rownames • SomaDataIOHelpers for Working With Row Names — rownames • SomaDataIOArticles + @@ -153,37 +169,37 @@

    FunctionsExamples

    df <- data.frame(a = 1:5, b = rnorm(5), row.names = LETTERS[1:5])
     df
    -#>   a           b
    -#> A 1 -1.19266041
    -#> B 2 -0.04778734
    -#> C 3 -0.27434618
    -#> D 4  0.48574007
    -#> E 5  1.11620272
    +#>   a          b
    +#> A 1 -0.3287390
    +#> B 2 -0.2246957
    +#> C 3 -0.1505550
    +#> D 4 -0.2335343
    +#> E 5  0.5518024
     rn2col(df)              # default name is `.rn`
    -#>   .rn a           b
    -#> 1   A 1 -1.19266041
    -#> 2   B 2 -0.04778734
    -#> 3   C 3 -0.27434618
    -#> 4   D 4  0.48574007
    -#> 5   E 5  1.11620272
    +#>   .rn a          b
    +#> 1   A 1 -0.3287390
    +#> 2   B 2 -0.2246957
    +#> 3   C 3 -0.1505550
    +#> 4   D 4 -0.2335343
    +#> 5   E 5  0.5518024
     rn2col(df, "AptName")   # pass `name =`
    -#>   AptName a           b
    -#> 1       A 1 -1.19266041
    -#> 2       B 2 -0.04778734
    -#> 3       C 3 -0.27434618
    -#> 4       D 4  0.48574007
    -#> 5       E 5  1.11620272
    +#>   AptName a          b
    +#> 1       A 1 -0.3287390
    +#> 2       B 2 -0.2246957
    +#> 3       C 3 -0.1505550
    +#> 4       D 4 -0.2335343
    +#> 5       E 5  0.5518024
     
     # moving columns
     df$mtcars <- sample(names(mtcars), 5)
     col2rn(df, "mtcars")   # with a warning
     #> Warning: `data` already has assigned row names. They will be over-written.
    -#>      a           b
    -#> hp   1 -1.19266041
    -#> am   2 -0.04778734
    -#> wt   3 -0.27434618
    -#> qsec 4  0.48574007
    -#> carb 5  1.11620272
    +#>      a          b
    +#> wt   1 -0.3287390
    +#> disp 2 -0.2246957
    +#> gear 3 -0.1505550
    +#> drat 4 -0.2335343
    +#> vs   5  0.5518024
     
     # Move back and forth easily
     # Leaves original object un-modified
    diff --git a/reference/soma_adat.html b/reference/soma_adat.html
    index f828a08..b0797a9 100644
    --- a/reference/soma_adat.html
    +++ b/reference/soma_adat.html
    @@ -63,7 +63,7 @@
     S3 assignment via $ is fully supported for class soma_adat.
     S3 assignment via [[ is supported for class soma_adat.
     S3 median() is not currently supported for the soma_adat class,
    -however a dispatch is in place to direct users to alternatives.">The soma_adat Class and S3 Methods — soma_adat • SomaDataIOThe soma_adat Class and S3 Methods — soma_adat • SomaDataIOArticles
       
     
    +
     
    diff --git a/reference/transform.html b/reference/transform.html
    index 4a5dc80..feb1e3b 100644
    --- a/reference/transform.html
    +++ b/reference/transform.html
    @@ -5,7 +5,7 @@
     If scaling the analytes/RFU (columns), v must have
     getAnalytes(adat, n = TRUE) elements.
     If scaling the samples (rows), v must
    -have nrow(_data) elements.">Scale Transform soma_adat Columns/Rows — transform • SomaDataIOScale Transform soma_adat Columns/Rows — transform • SomaDataIOArticles
       
     
    +
     
    diff --git a/reference/write_adat.html b/reference/write_adat.html
    index f2daa73..55e1616 100644
    --- a/reference/write_adat.html
    +++ b/reference/write_adat.html
    @@ -2,7 +2,7 @@
     Write an ADAT to File — write_adat • SomaDataIOWrite an ADAT to File — write_adat • SomaDataIO