The R for Mass Spectrometry project and meta-package

Introduction

RforMassSpectrometry is a meta-package, to manage and document the R for Mass Spectrometry (https://www.rformassspectrometry.org/) project. The goal of the project to provide efficient, thoroughly documented, tested and flexible R software for the analysis and interpretation of high throughput mass spectrometry assays, including proteomics and metabolomics experiments. The project formalises the longtime collaborative development efforts of its members under the R for Mass Spectrometry organisation to facilitate dissemination and accessibility of their work.

Installation

To install the core R for Mass Spectrometry packages, you will need the BiocManager package, available on CRAN. If not already available, install it with

if (!require("BiocManager"))
    install.package("BiocManager")

To proceed with the installation, run

BiocManager::install("RforMassSpectrometry/RforMassSpectrometry")

Note that some very recent Bioconductor will be needed to install and run the suite of R for Mass Spectrometry packages, and will require a recent version of R and possibly even installing the Bioconductor development version.

Loading the RforMassSpectrometry package with

library("RforMassSpectrometry")
## Warning: replacing previous import 'MsCoreUtils::entropy' by 'Spectra::entropy'
## when loading 'RforMassSpectrometry'
## Warning: replacing previous import 'MsCoreUtils::smooth' by 'Spectra::smooth'
## when loading 'RforMassSpectrometry'
## Warning: replacing previous import 'MsCoreUtils::bin' by 'Spectra::bin' when
## loading 'RforMassSpectrometry'
## 
## Visit https://RforMassSpectrometry.org for detail about the project.

will load the required core packages.

Code of Conduct

As contributors and maintainers of the R for Mass Spectrometry initiative, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. Examples of unacceptable behaviour by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported by opening an issue or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the Contributor Covenant, version 1.0.0, available from http://contributor-covenant.org/version/1/0/0/

Contributions

The R for Mass Spectrometry project welcomes contributions in the form of ideas, documentation, code, packages, fixes (bugs and typos), … We invite you to discuss any of these opening a GitHub issue in the relevant package github repository.

If you have any direct contributions to an existing repository, we suggest to first discuss these as an issue if it implies any substantial changes (no need for an issue if its a simple typo, and we really appreciate those).

Contributions, even those from core members, are always expected to come in the form of a pull request (PR) that then undergoes a formal review. To do this, start by forking the package you want to contribute. It is also advised to work in, and make the PR, from a non-master branch. Good branch names include issueX when it relates to a specific issue, feat-X, bug-Y, docs-Z for new features, bug fixes and documentation updates respectively. The reviewers might ask for additional clarifications and/or changes prior to merging the PR. When contemplating contributing code, please follow the style guide below.

In particular, when several developers collaborate on a feature, an admin should create a dedicated branch RforMassSpectrometry/Package:branch. Developers should then fetch that branch in their local copy of the Package repository and send PRs to that branch too, where it will be reviewed, and eventually merged into RforMassSpectrometry/Package:master.

See also the tidyverse and Mycrof contribution guides for additional resources and instructions.

Reviewers will do their best to help you to get the PR merged1.

We also anticipate to open up some specific requests for contributions and invite specific members of the community, if we identify a specific need and/or a specific developer to address that need.

Commit messages

Commit messages should follow the Conventional Commits guidelines. In particular, the following types are recommended (based on angulars types):

  • build: Changes that affect the build system or external dependencies (example scopes: depends, suggests, imports, …).
  • ci: Changes to the continous integration (CI) configuration files and scripts (example: Travis configuration file).
  • docs: Documentation only changes, including manual pages and vignettes.
  • feat: A new feature.
  • fix: A bug fix.
  • perf: A code change that improves performance.
  • refactor: A code change that neither fixes a bug nor adds a feature.
  • style: Changes that do not affect the meaning of the code (white-space, formatting, …).
  • test: Adding missing tests or correcting existing tests.
  • other: Anything that doesn’t fit in the above. Consider opening an issue suggestion a new type.

Credit where credit is due

We also want to offer proper credit to those that provide substantial contributions. Substantial contributions include, for example

  • new functionality that goes beyond e.g. a simple plot function
  • bug fixes combined with related unit tests
  • extended documentation, examples or vignettes describing a complete (potentially alternative) analysis workflow or use-case

Fixing typo(s) isn’t considered a substantial contribution per-se, even though they are highly appreciated.

Once a substantial contribution passes review and is merged, we will add the contributor in the package’s author list as an official contributor (ctb role) or even author (aut role) for more substantial contributions. The contributors name will also be added to the R for Mass Spectrometry web page and to any relevant publications that directly stem from their work.

Coding style

The R for Mass Spectrometry packages follows the Bioconductor style guide. In particular

  • Do not use . when naming symbols.
  • A leading . can be used for hidden/local functions or variables.
  • Snake case should be restricted to internal functions. For consistency, we favour camel case for public functions.
  • Class names should start with a capital and each class should posses a constructor with identical name. Running the constructor without any input should produce a valid empty object.
  • Use ## to start full-line comments.
  • For roxygen headers #' is preferred, although ##' is tolerated.
  • Use spaces between = in function arguments or class definition: f(a = 1, b = 2).
  • Always use a space after a comma: a, b, c.
  • Always use spaces around binary operators: a + b.
  • Lines should be kept shorter than 80 characters. For example the following code isn’t accepted
# no wrap at 80
someVeryLongVariableName <- someVeryLongFunctionName(withSomeEvenLongerFunctionArgumentA = 1, withSomeEvenLongerFunctionArgumentB = 2)

and should be wrapped as shown below:

# alternative 1
someVeryLongVariableName <-
    someVeryLongFunctionName(withSomeEvenLongerFunctionArgumentA = 1,
                             withSomeEvenLongerFunctionArgumentB = 2)
# alternative 2
someVeryLongVariableName <- someVeryLongFunctionName(
    withSomeEvenLongerFunctionArgumentA = 1,
    withSomeEvenLongerFunctionArgumentB = 2)

Contact

Please see the contact page for instructions on how to get in touch.

Session info

## R version 4.4.2 (2024-10-31)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Etc/UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] RforMassSpectrometry_0.1.5 BiocStyle_2.35.0          
## 
## loaded via a namespace (and not attached):
##  [1] SummarizedExperiment_1.37.0 MsExperiment_1.9.0         
##  [3] xfun_0.49                   bslib_0.8.0                
##  [5] QFeatures_1.17.0            PSMatch_1.11.0             
##  [7] Biobase_2.67.0              lattice_0.22-6             
##  [9] vctrs_0.6.5                 tools_4.4.2                
## [11] generics_0.1.3              stats4_4.4.2               
## [13] parallel_4.4.2              tibble_3.2.1               
## [15] fansi_1.0.6                 cluster_2.1.6              
## [17] pkgconfig_2.0.3             Matrix_1.7-1               
## [19] S4Vectors_0.45.2            lifecycle_1.0.4            
## [21] GenomeInfoDbData_1.2.13     stringr_1.5.1              
## [23] compiler_4.4.2              codetools_0.2-20           
## [25] clue_0.3-66                 GenomeInfoDb_1.43.1        
## [27] htmltools_0.5.8.1           sys_3.4.3                  
## [29] buildtools_1.0.0            sass_0.4.9                 
## [31] yaml_2.3.10                 lazyeval_0.2.2             
## [33] pillar_1.9.0                tidyr_1.3.1                
## [35] crayon_1.5.3                jquerylib_0.1.4            
## [37] MASS_7.3-61                 BiocParallel_1.41.0        
## [39] cachem_1.1.0                DelayedArray_0.33.2        
## [41] MetaboCoreUtils_1.15.0      abind_1.4-8                
## [43] tidyselect_1.2.1            digest_0.6.37              
## [45] stringi_1.8.4               purrr_1.0.2                
## [47] dplyr_1.1.4                 reshape2_1.4.4             
## [49] maketools_1.3.1             fastmap_1.2.0              
## [51] grid_4.4.2                  cli_3.6.3                  
## [53] SparseArray_1.7.2           magrittr_2.0.3             
## [55] S4Arrays_1.7.1              utf8_1.2.4                 
## [57] UCSC.utils_1.3.0            rmarkdown_2.29             
## [59] XVector_0.47.0              httr_1.4.7                 
## [61] matrixStats_1.4.1           igraph_2.1.1               
## [63] evaluate_1.0.1              knitr_1.49                 
## [65] GenomicRanges_1.59.1        IRanges_2.41.1             
## [67] MultiAssayExperiment_1.33.0 rlang_1.1.4                
## [69] Rcpp_1.0.13-1               glue_1.8.0                 
## [71] DBI_1.2.3                   BiocManager_1.30.25        
## [73] BiocGenerics_0.53.3         Spectra_1.17.0             
## [75] jsonlite_1.8.9              plyr_1.8.9                 
## [77] AnnotationFilter_1.31.0     R6_2.5.1                   
## [79] MatrixGenerics_1.19.0       fs_1.6.5                   
## [81] zlibbioc_1.52.0             ProtGenerics_1.39.0        
## [83] MsCoreUtils_1.19.0

  1. Useful reading: The nodejs reviewing PRs for reviewers guide↩︎