---
title: "QFeaturesGUI"
author:
    - name: Léopold Guyot
output:
    BiocStyle::html_document:
        self_contained: yes
        toc: true
        toc_float: true
        toc_depth: 2
        code_folding: show
bibliography: QFeaturesGUI.bib
date: "`r BiocStyle::doc_date()`"
package: "`r BiocStyle::pkg_ver('QFeaturesGUI')`"
vignette: >
  %\VignetteIndexEntry{QFeaturesGUI}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>",
    crop = NULL
)
```

# QFeaturesGUI

`QFeaturesGUI` is a collection of Shiny applications that provide graphical
user interfaces for the analysis of MS-based proteomics data using the
Bioconductor ecosystem. It builds on the functionality of the
[`QFeatures`](https://rformassspectrometry.github.io/QFeatures/) and [`scp`
package](https://bioconductor.org/packages/release/bioc/html/scp.html)
(@scpVanderaa), offering user-friendly tools for both **bulk** and
**single-cell proteomics (SCP)** data analysis.

The suite leverages the power of **Shiny** and **shinydashboardPlus** to
deliver interactive, modular applications. Rather than a single monolithic app,
`QFeaturesGUI` is composed of multiple applications, each dedicated to a
specific aspect of proteomics data analysis. These applications are documented
in separate vignettes, making it easy for users to navigate and find
information relevant to their needs.

Currently available applications include:

- Data import
- Data processing

Additional applications will be added in future releases.

# The `QFeatures` and `scp` Packages

`QFeaturesGUI` serves as a graphical interface to core Bioconductor data
infrastructures for proteomics. To use the GUI applications effectively, it is
recommended to understand how the underlying packages handle proteomics data.
This section provides a brief overview; refer to the respective package
documentation for more detailed information.

## The `QFeatures` Package

The [`QFeatures`](https://rformassspectrometry.github.io/QFeatures/) package is
a data framework specifically designed to manipulate and process **MS-based
quantitative proteomics data**, with a primary focus on **bulk proteomics**
workflows (@Gatto2020-ry).

It preserves the relationships between different levels of information, such as
peptide to spectrum match (PSM) data, peptide data, and protein data.
Additionally, the `QFeatures` package provides an interface to various utility
functions that streamline common MS data processing tasks.

For further details on MS data analysis tools, refer to the
[RforMassSpectrometry project](https://www.rformassspectrometry.org/).

## The `scp` Package

The [`scp`
package](https://bioconductor.org/packages/release/bioc/html/scp.html) extends
`QFeatures` to support **single-cell proteomics (SCP)** data analysis
(@scpVanderaa). It operates on a specialized data structure that wraps
`QFeatures` objects around
[`SingleCellExperiment`](http://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html)
objects (@Amezquita2019-bf).

This data structure can be conceptualized as Matryoshka dolls, where
`SingleCellExperiment` objects are the smaller dolls contained within the
larger `QFeatures` object.

The `SingleCellExperiment` class provides a dedicated framework for single-cell
data, acting as an interface to cutting-edge methods for processing,
visualizing, and analyzing single-cell data. By combining
`SingleCellExperiment` and `QFeatures`, the `scp` package enables principled
handling of SCP-specific challenges while maintaining compatibility with the
broader MS-based proteomics ecosystem.

# Before You Start

Before diving into proteomics data analysis using `QFeaturesGUI`, it is
important to note that these applications act as interfaces to the underlying
`QFeatures` and `scp` packages.

When errors occur during an analysis, `QFeaturesGUI` reports the corresponding
error messages in a dropdown menu at the top right of the application
interface. These messages originate from the underlying package functions.
Users are therefore encouraged to consult the documentation of the associated
`QFeatures` or `scp` functions to identify and resolve issues.

The error messages provide valuable clues, and searching the package
documentation will often help users troubleshoot effectively.

# Installation and Launch
## Installation

```{r, eval = FALSE}
# Check if remotes is installed. Otherwise install it.
if (!require("remotes", quietly = TRUE)) {
    install.packages("remotes")
}
# Install the package
remotes::install_github("rformassspectrometry/QFeaturesGUI")
# Load the package
library(QFeaturesGUI)
```

## Application launch

`QFeaturesGUI` is composed of multiple Shiny applications, each dedicated to a
specific step of the proteomics data analysis workflow. Applications are
launched independently, depending on the task to be performed.

For example, the application dedicated to importing data into a `QFeatures`
object can be launched as follows:

```{r, eval = FALSE}
app <- importQFeatures()

if (interactive()) {
    shiny::runApp(app)
}
```

Similarly, the application dedicated to data processing can be launched using:

```{r, eval = FALSE}
app <- processQFeatures(qfeaturesObject)

if (interactive()) {
    shiny::runApp(app)
}
```

# Applications overview

Rather than a single application with multiple sections, QFeaturesGUI provides
a set of dedicated applications. Each application addresses one step of the
proteomics workflow and exposes functionality through a focused graphical
interface.

The use of each application is described in a corresponding vignette:

- **Data import**: `importQFeatures`  
  See the [importQFeatures vignette](importQFeatures.html)

- **Data processing**: `processQFeatures`  
  See the [processQFeatures vignette](processQFeatures.html)

Additional applications will be introduced in future releases and documented in
their own vignettes.

# Citation



# References
