NEWS
bmass 1.0.3 (2019-05-17)
Summary
- Patches for 2nd CRAN resubmission
Since previous version (v1.0.2)
Notes
- Removed
\dontrun{} chunks in most cases and otherwise put the same code in a #' @section chunk
Next steps (if applicable)
bmass 1.0.2
Summary
- Patches for CRAN resubmission
Since previous version (v1.0.1)
Notes
- Added some requested reformatting in
DESCRIPTION
Next steps (if applicable)
bmass 1.0.1
Summary
- Patches in-between first release and final CRAN submission/acceptance
Since previous version (v1.0.0)
Notes
- Fixed 'Vignette Title' entries for both vignettes
- Added in temp fix for R.3.6+ unit test re: use of RNG/
sample()
Next steps (if applicable)
bmass 1.0.0
Summary
- Finished prep for CRAN submission
- Setup Travis CI for repo
- Finished leftover unit tests
- Moved vignette setup into two introductory examples
- Edits and suggestions from Peter Carbonetto to help with first main release
Since previous version (v0.1.3)
- Finished doing necessary prep and checks for CRAN package submission
- Finished documenting leftover objects and function arguments for
Roxgyen2 & devtools::check()
- Setup and connected Travis CI to git repo
- Finished unit tests in
tests/testthat/test-BasicRFunctionality.R, test-ResultsFollowupAnalysisAndPlotting.R, test-Stephens2013PLoSONE.globallipids.GLCfuncs.R, and test-Stephens2013PLoSONE.test.funcs.R
- Made
Models output more user-friendly versions
- Put phenotype names on top of
Models and directed users in main vignette to utilize GetModelPriorMatrix() for a more interpretable version of ModelPriors
- Made a new introductory vignette using a small, simulated dataset, and moved the previous one into a 'more advanced' introductory example (referened as a 'real data' example)
- Merged and adopted edits made by Peter Carbonetto, as well as adopted a few of his suggestions
- Added proper
releases on the github repo#
- Created a
pkgdown website for the github repo
- Created the new vignette as described above
- Updated
README.md
- Further cleaned up
roxygen2 comments & examples
Notes
- Changed inputs of
GetModelPriorMatrix() in ResultsFollowupAnalysisAndPlotting.R so that SigmaAlphas is given a default value to begin with and therefore positioned after LogFile
Next steps (if applicable)
- Change output of Matthew's code to use logBFs vs. lbf, and align with overall style of bmass wherever else applicable
- Create second vignette on how to run
bmass() with some data already created (ie a merged dataset, a phenotype correlation matrix, and priors)
- Include note that, if provided,
ZScoresCorMatrix should have the same phenotype order as DataSources
- Double-check new
PassChecksForDataSources.R additions
- Flesh out
CheckMergedDataSources as an analogue to CheckIndividualDataSources for when a merged dataset is provided.
- Include check that all datasets have same A1 (in
MergeDataGWASAnnotateAndGetMarginalSNPs.R) & that A1 part of ExpectedColumnNames
- Include some of the extra, downstream functions such as
GetModelPriorMatrix() in the advanced, introductory vignette
bmass 0.1.3
Summary
- Finished cleaning up all main comments leftover in every
*.R file
- Added in
Roxygen2 comments and the first vignette, and finished creating unit tests
- Went through
devtools::check() results and made required edits
Since previous version (v0.1.2)
- Cleaned comments & formatting from
bmass.R, Stephens2013PLoSONE.globallipids.GLCfuncs.R, & Stephens2013PLoSONE.test.funcs.R
- In
bmass.R changed GWASThreshFlag from 0/1 to FALSE/TRUE
- Mmade related changes to
DetermineAndApplyPriors in GetResultsFromMarginalSNPsAndFormat.R
- Switched
GWASThreshFlag to default as TRUE
- In
ResultsFollowupAnalysisAndPlotting.R removed a large number of the functions that were potentially more manuscript-specific and likely to become deprecated (most of which were plotting-related)
- Moved any
library() calls to proper use of Imports in DESCRIPTION file
Notes
- Dealt with CHECK_0's in
GetResultsFromMarginalSNPsAndFormat.R (ie CHECK_0 -- Prob: Throw an error/fail thing here)
- In
bmass.R changed PrintLogStatements to PrintProgress
- In
bmass.R removed the loadings of library(ggplot2) and library(reshape2)
- In
bmass.R removed the commented out ExploreBestModelsUsingPosteriors()
- In
bmass.R & main bmass() call added "A1" to ExpectedColumnNames
Next steps (if applicable)
- Finish doing necessary prep and checks for CRAN package submission
- Setup and connect Travis CI to git repo
- Change output of Matthew's code to use logBFs vs. lbf, and align with overall style of bmass wherever else applicable
- Fix
Models and ModelPriors outputs to more user-friendly versions
- Put phenotype names on top of
Models and possibly condense ModelPriors across all the SigmaAlphas
- Create second vignette on how to run
bmass() with some data already created (ie a merged dataset, a phenotype correlation matrix, and priors)
- Include note that, if provided,
ZScoresCorMatrix should have the same phenotype order as DataSources
- Finish unit tests in
test-ResultsFollowupAnalysisAndPlotting.R, particularly evaluate issues with GetTopModelsPerSNPViaPosteriors
- Finish unit tests in
test-Stephens2013PLoSONE.globallipids.GLCfuncs.R and test-Stephens2013PLoSONE.test.funcs.R
- Finish
merge() unit tests in tests/testthat/test-BasicRFunctionality.R
- Flesh out
CheckMergedDataSources as an analogue to CheckIndividualDataSources for when a merged dataset is provided.
- Double-check new
PassChecksForDataSources.R additions
- Put in new checks for
Marker column, input MergeDataSources file, etc... as well
- Include check that all datasets have same A1 (in
MergeDataGWASAnnotateAndGetMarginalSNPs.R) & that A1 part of ExpectedColumnNames
- Check/correct how
write(...stderr()) is functioning in bmass.R (since it seems like that might not be occuring like I was expecting it to?)
bmass 0.1.2
Summary
- Revised some important portions of data-preprocessing
- Began creating and flushing out
ResultsFollowupAnalysisAndPlotting.R (eg GetModelPriorMatrix, GetTopModelsPerSNPViaPosteriors, ``, etc...)
- Began cleaning up and adding in proper comments/formatting/etc for eventual, formal, first release (ie v1.0.0)
- Followed up on a number of previous suggested comments/edits from prior work
- Added in
GWASThreshFlag & GWASThreshValue functionality
Since previous version (v0.1.1)
- Separated
MergeDataSources() from AnnotateMergedDataWithGWASSNPs() in main bmass() call since the two parts take very different times, ie former is longer than the latter.
- Changed
AnnotateDataWithGWASSNPs to a quicker version where the loop is over the GWAS SNPs and not the merged dataset; taking advantage of in-line conditional statements as well for row selection.
- Included new flag
PrintMergedData to indicate whether bmassOutput$MergedDataSources should be included as part of the output and not made NULL. This would be for whether a user wants to save a copy of MergedDataSources and reuse it for later runs.
- Added
bmass() input variable ZScoresCorMatrix that allows users to manually use a specified phenotype correlation matrix.
- Fixed
DetermineAndApplyPriors to output PreviousSNPs$logBFs in the sections when ProvidedPriors is not NULL and when UseFlatPriors is TRUE.
- Added in
Marker column as an expectation for input files in lieu of the ChrBP column I constructed. If ChrBP is desired to be used as marker names, it can be created by users before submitting the files to bmass().
- Added in functionality to designate
GWASsnps not only by input GWASsnps file but also by a GWAS p-value threshold (via GWASThreshFlag & GWASThreshValue)
- Properly designated
PreviousSNPs sections in GetResultsFromMarginalSNPsAndFormat.R (both DetermineAndApplyPriors and FinalizeAndFormatResults) with ...if (!is.null(GWASsnps)) {... encapsulation as needed
- Added in
write(..., stderr()) statements to mimic calls to LogFile1 to be produced as bmass() runs, eg giving user a live look into how/where the script is proceeding. These statements are a bit more broad/higher-level than the LogFile1 calls themselves. Also created PrintLogStatements (default FALSE) to turn this functionality on/off.
- In
MergeDataSources, added in section post-merge that checks SNPs still have correct MAF (eg <= .5).
- Also now checking and dropping SNPs that appear 'fixed' in dataset, eg MAF is equal to 0.
- Moved MAF checks (eg if MAF <= .5, if fixed (0 or 1), etc...) to
CheckIndividualDataSources section.
- Added in
CheckDataSourceMAFIsMAF and CheckDataSourceMAFFixed functions.
- Additionally, now just quitting program if there are fixed SNPs or SNPs that are still > .5; rather have the user fix their datasets and make sure things are correct rather than doing processing mid-package/functions
Notes
- Moved
bmass.devlog.vs1.txt to bmass.devlog.vs1.md.
- Changed adding max * length to just add max in
GetSumAcrossSigmaAlphas_withPriors.
- Moved to data.frame column calls via
$ from atomic vector style calling in AnnotateDataWithGWASSNPs after move away from apply function.
- Changed
logBF to logBFs.
- Fixed check for
ProvidedPriors in CheckIndividualDataSources to expect 3 ^ (length(DataSources) * length(SigmaAlphas)), not 3 ^ length(DataSources).
- In
bmass.R changed if (is.null(PrintMergedData)) { to if (PrintMergedData == FALSE) {, and changed default value of PrintMergedData from NULL to FALSE.
- Changed
posteriorprob so that prior in apply(prior * 10^lbf,2,normalize) now specifies the proper matrix dimensions rather than assuming, given proper length, prior will be multiplied along lbf filling column-wise first (which it does by default).
- Added
MergedDataSources as one of the return values of ProcessMergedAndAnnotatedDataSources in MergeDataGWASAnnotateAndGetMarginalSNPs.R
- Added
SigmaAlphas as an input to GetModelPriorMatrix in ResultsFollowupAnalysisAndPlotting.R
- Corrected
ZScoreHitFlag1 cutoff by including 2*pnorm...
- Added
if (nrow(SummaryOfTopModels) > 1) {... to GetTopModelsPerSNPViaPosteriors in ResultsFollowupAnalysisAndPlotting.R because (apparently) reordering a single-row matrix in the way that I'm doing it messes up its classification as a matrix; after this command, and loss of matrix class, the following colnames() command throws an error. This does not occur when there are more than one row and an actualy 're-ordering' occurs (presumably).
Next steps (if applicable)
- Flesh out
CheckMergedDataSources as an analogue to CheckIndividualDataSources for when a merged dataset is provided.
- Double-check new
PassChecksForDataSources.R additions
- Put in new checks for
Marker column, input MergeDataSources file, etc... as well
- Finish cleaning up comments/edits from offline/pre-dissertation work
- Start adding in necessary portions for proper R-package structure/eventual CRAN-submission (eg fleshed-out Roxygen2 comments, unit tests, vignettes, necessary additional datafiles for sections such as the unit tests and vignettes, etc...)
- Include check that all datasets have same A1 & that A1 part of
ExpectedColumnNames
- Move towards getting v1.0.0 prepared
bmass 0.1.1
Summary
- First revision and reorganization/restructuring of .R files and internal code
- First steps in setting up unit tests via
testthat
Since previous version (v0.1.0)
- Began moving chunks of code from
PrepareData.R to better designated .R files
- Changed the few leftover instances of
NewHits to NewSNPs
- Moved
NewSNPs creation section to after creation of logBFs and PosteriorProbabilities matrices from MarginalHits; moved NewHits <- NULL initialization section of entire code
- Moved from
LogFile1 to LogFile
- Changed
ProvidedPriors to be the first option in the if/elseif/else block that also checks is.null(GWASsnps)..., etc...
- Began setting up unit tests via
testthat, including for basic R functionality, PassChecksForDataSources.R, and
- Introduced main bmass input variable
GWASsnps_AnnotateWindow
- Moved all instances of
MarginalHits to MarginalSNPs, including in variable names, eg PruneMarginalHits and PruneMarginalHits_bpWindow
- Split up
GetLogBFsFromData into GetLogBFsFromData and DetermineAndApplyPriors
- Moved
GetResultsFromMarginalSNPs.R to GetResultsFromMarginalSNPsAndFormat.R, moved FinalizeAndFormatResults() back to GetResultsFromMarginalSNPsAndFormat.R, and removed FormatAndPrepareResults.R
- Created
ExploreBestModelsUsingPosteriors to put code chunks dealing with posteriors and related analyses such as BestClass
- Moved
FollowupResultsAnalysisFormattingAndPlotting.R to ResultsFollowupAnalysisAndPlotting.R
- Moved
ExploreBestModelsUsingPosteriors into ResultsFollowupAnalysisAndPlotting.R
Notes
- Moved
TestData1.txt, TestData2.txt, and TestSigSNPs.txt to bmass_TestData1.txt, bmass_TestData2.txt, and bmass_TestSigSNPs.txt
- Currently unclear whether Roxgyen-based .R files describing above test datasets should be in /data or in /R. R CMD check throws warning/error if .R files not in /data, but R won't load datasets via data() properly if .R files not found in /R
- Changed
CheckCharacterFormat to CheckCharacterClass
- Changed underlying code for
CheckDataSourceDirectionColumn, moving from a for loop to use of ...if (length(...[...!= "+" & ... != "-"]) > 0 )...
- Changed
LogFile to bmassOutput$LogFile in main bmass.R file
- Using
bmassOutput as a way to hold temp variables since can output and assign multiple variables via the list structure and self-made functions. Eg cannot do c(var1, var2) <- function(input1), but can do list1[c("var1", "var2")] <- function(input1) assuming function outputs a list with two entries
- Reworked order of input variables for main bmass function
- Included
paste(..., collapse=" ") at end of stop() calls that had DataSources[!DataSources...]-type error messages
stop() seems to already have some automatic paste()-type calls? Eg how it can incorporate my call to paste() at the end without any additional specifications
- Moved
LogBF to logBF in all instances except for function name GetLogBFsFromData
- Moved
if (!is.null(bmassSeedValue)) {... section to within the else{...} portion of the if (!is.null(ProvidedPriors)) {... block
- Changed
Priors_Used to ModelPriors_Used
- In
GetSumAcrossSigmaAlphas_withPriors changed ModelPriors to ModelPriors_Matrix
- In function call for
GetSumAcrossSigmaAlphas_withPriors in FinalizeAndFormatResults, including ...matrix(...nrow=length(ModelPriors)...)... to make the number of rows explicit
Next steps (if applicable)
- Finish creating unit tests for all .R files and necessary functions
- Finish Roxygen commenting
- Continue revising/reviewing code, including working through remaining CHECK_0 flags
- Go through R CMD CHECK output?
bmass 0.1.0
Summary
- Reworked format of
bmassOutput to include the list() structure of MaringalSNPs, NewSNPs, and PreviousSNPs
Since previous version (v0.0.4)
- Added the following to
bmassOutput: NewSNPs, NewSNPs$SNPs, NewSNPs$logBFs, NewSNPs$Posteriors
- These are mostly focused on including the GWAS snp results
- Initialized
bmassOutput variables and associated lists at beginning of function
- Changed
SNPMarginalpValThreshold to SNPMarginalUnivariateThreshold and SNPMarginalMultivariateThreshold
- Moved
PosteriorProbabilities to Posteriors
- Created
MarginalSNPs, NewSNPs, and PreviousSNPs setup with list() formatting
- Seeing redundancy among MarginalSNPs, NewSNPs, and Previous SNPs, lead to this suggestion and change
- Moved back to
PreviousSNPs from GWAShits
- Added
BestModel_Posterior to PreviousSNPs mostly has a reminder/placeholder for the time being to expand on it later for both NewSNPs and MarginalSNPs
Notes
- Decided the creation of the first, fully working
bmassOutput warranted moving to version 0.1.0
- Partially thinking should have moved to 0.1.0 from 0.0.3 but turns out there were a few useful edits to make to warrant 0.0.4 in the first place
- Next string of updates and 'small patches' will be geared towards reworking and cleaning up the organization of the R files and associated functions
- Then 0.2.0 on might focuse on creating useful/necessary follow-up analysis functions?
- Include
BestModel as a variable for every SNP? Include posterior as well as the model itself?
Next steps (if applicable)
- Same as 0.0.4
- For follow-up functions: Put
ModelMatrix, AllBut1Assoc, and MarginalPosteriors into this area?
bmass 0.0.4
Summary
- Created first draft of preliminary, complete
bmassOutput variable
Since previous version (v0.0.3)
- Fleshed out first
is.null(GWASsnps) & else subsections
- Implemented pruning section and
PruneMarginalHits flag
- Created
logBFs and PosteriorProbabilities output matrices
- Initialized
GetSumAcrossSigmaAlphas_withPriors()
- Created
NewSNPs output variable, in conjunction with GWASlogBFMinThreshold
- Added current desired, associated variables to
bmassOutput
Notes
- Current content associated with
bmassOutput:
MarginalSNPs
ModelPriors
logBFs
PosteriorProbabilities
GWASlogBFMinThreshold
NewSNPs
Next steps (if applicable)
- Next steps include:
- cleaning up code (eg superfluous comments, print statements, etc...)
- moving to a return() ending for the code via
bmassOutput
- beginning to map out breaking up code into more definable subsections for better organized .R file subsets
- reviewing, updating, and changing (if/as necessary),
bmassOutput associated variables
- any other additions? include both logBFs and PosteriorProbabilities?
- begin considering downstream helper functions for follow-up analyses/plots of
bmassOutput results