Lifting Code 🚀
-
Major restructure of
lift_adat()
functionality (@stufield, #81, #78)lift_adat()
now takes abridge =
argument,
replacing theanno.tbl =
argument (which is now deprecated). Lifting
is now performed internally for a better (and safer)
user experience, without the necessity of an
external annotations (Excel) file.- the majority of this refactoring was internal
and the user should not experience a major
disruption to the API. - much improved lifting/bridging documentation (#82)
-
Added a new lifting and bridging vignette (@stufield, #77)
- in addition to the improved lifting documentation
this new vignette provides additional context,
explanation, clear examples, and lifting guidance.
- in addition to the improved lifting documentation
New Functions ✨
-
is_lifted()
is new and returns a boolean according to
whether the signal space (RFU) has been previously lifted -
Lifting accessor function for Lin's CCC values (#88)
getSomaScanLiftCCC()
accesses the lifting correlations between
SomaScan versions for each analyte- returns a
tibble
split by sample matrix (serum or plasma)
-
merge_clin()
is newly exported (#80)- a thin wrapper that allows users to merge
clinical variables tosoma_adat
objects easily - previously users had to either use the CLI merge tool
or merge in clinical variables themselves withdplyr
- a thin wrapper that allows users to merge
-
Newly exported ADAT "get**" helpers (#83)
- functions to access properties of ADATs
getAdatVersion()
getSomaScanVersion()
getSignalSpace()
checkSomaScanVersion()
getAdatVersion()
gets a new S3 method (#92)- this enables passing of different objects
- namely
soma_adat
orlist
depending on the situation
- functions to access properties of ADATs
-
Newly exported functions that were previously internal only:
addAttributes()
addClass()
cleanNames()
New Vignettes 🤓
-
The package
README
is now simplified (#35)- example analysis workflows are now split out
into their own vignettes/articles
and cross-linked in theREADME
- example analysis workflows are now split out
-
Reorganization and expansion of statistical vignettes (#35, #47)
- moved 3 existing statistical examples from
README
into their own vignettes - resulting in four new "Statistical Workflow" vignettes/articles:
- Binary classification via logistic regression
- Linear regression for continuous variables
- Two-group comparison via t-test
- Three-group analysis ANOVA
- moved 3 existing statistical examples from
-
Added new general analysis workflow vignettes
- articles for the pkgdown website have been built out
- new articles on:
- safely mapping values among variables
- safely renaming a data frame
- loading-and-wrangling
- typical train and test data splits
- beginning the FAQs and/or Coming Soon pages
-
Added a new vignette describing how to use the
command-line interface merge tool (#45)- the new CLI merge tool used to add
new clinical data to existing ADAT file
- the new CLI merge tool used to add
Updates and Improvements 🔨
-
collapseAdats()
better combinesHEADER
information (#86)- certain information, e.g.
PlateScale
andCal*
,
are better maintained in the final collapsed ADAT - other entries are combined by pasting into a single string
- should result in less duplication of superfluous entries and
retention of more "useful"HEADER
information
in the resulting (collapsed)soma_adat
- certain information, e.g.
-
Update
read_annotations()
with11k
content (#85) -
Update
transform()
andscaleAnalytes()
scaleAnalytes()
(internal) now skips missing references
and is much more like a "step" in therecipes
packagetransform()
gets edge case protection withdrop = FALSE
in case a single-analytesoma_adat
is scaled.
-
New
row.names()
S3 method support forsoma_adat
class- dispatched on calls to
rownmaes()
- rather than calling
NextMethod()
which normally
would invokedata.frame
, we now force thedata.frame
method in case there aretbl_df
orgrouped_df
classes present that would be dispatched.
Those are bypassed in favor of thedata.frame
becausetbl_df
1) can nuke the attributes, 2)
triggers a warning about adding rownames to atibble
.
- dispatched on calls to
-
New
grouped_df
S3 print support for the groupedsoma_adat
- now displays Grouping information from a call to
the S3 print method forsoma_adat
class
- now displays Grouping information from a call to
-
New
grouped_df
S3 method support forsoma_adat
class (#66)grouped_df
data objects previously unsupported and were
interfering with downstream S3 methods fordplyr
verbs
onceNextMethod()
was called- this support now ensures that the group
methods are maintained, as well as thesoma_adat
class itself (and most importantly, with its attributes intact)
-
tidyr::separate.soma_adat()
S3 method was simplified (#72)- now uses
%||%
helper internally - expanded error messages inside
stopifnot()
to be more informative
- now uses
-
is_intact_attr()
is now much quieter, signaling only when called indirectly (#71)- new conditional logic to silences signaling messages when
called from within another function (indirectly) - these previously lead to confusing messages
when they appear in wrappers, whereis_intact_attr()
can be, sometimes deeply, nested in the call stack
- new conditional logic to silences signaling messages when
-
Development and improvements to the
pkgdown
website- added new links and improved clarity in YAML
- added new logo at footer
- restyled side bar for easier hyperlinking and getting help
- clicking on the SomaLogic logo in the GitHub
README
now links to thepkgdown
website - new "Coming Soon" drop-down section in the website header
to let users know about active progress (but not yet ready
for external publication)
-
SomaDataIO
no longer depends ondesc
package- to generate the
README.md
- to generate the
Internal 🚧
-
Internal rowname helpers were upgraded
- they now use internal cross-functions
as originally intended to avoid redundancy, efficiency,
and improved debugging
- they now use internal cross-functions
-
sysdata.rda
no longer contains non-exported functions (#59)- new internal helper functions:
convertColMeta()
genRowNames()
parseCheck()
syncColMeta()
scaleAnalytes()
- new internal helper functions:
-
Bug-fix for corner-case writing a single-analyte ADAT (#51)
- RFU values are rounded to 1 decimal place when written by
write_adat()
, via a call toapply()
, which expects a 2-dim object
when replacing those values. write_adat()
no longer usesapply()
and instead converts
the entire RFU data frame to a matrix (maintains original dimensions),
and use vectorized format conversion viasprintf()
- in theory this should be faster because
sprintf()
is only called once on a long vector, rather than
1000s of times on shorter vectors (insideapply()
).
- RFU values are rounded to 1 decimal place when written by