# Shot Noise

    # load libraries
    library(isoorbi) # for Orbitrap functions
    library(dplyr) # for data wrangling

# Model Peptide (MRFA)

This is an example for shot-noise analysis from Kantnerová et al. (2023).

# Data

## Load data

    # load and process data
    data <-
      # load file included in isoorbi package
      system.file(package = "isoorbi", "extdata", "testfile_shotnoise.isox") |>
      orbi_read_isox() |>
      # check data for satellite peaks
      orbi_flag_satellite_peaks() |>
      # make sure isotopocules are present in (almost) all scans, otherwise
      # shot noise analyses can be inaccurate
      orbi_flag_weak_isotopocules(min_percent = 90) |>
      # see if there are any AGC outliers
      orbi_flag_outliers(agc_fold_cutoff = 2)

This indicates that there were a few satellite peaks and weak isotopocules but no outliers.

## Visualize isotopocule coverage

Show the isotopocule coverage for the different amino acids, thus highlighting which isotopocules were detected in which scans. Note that 2H was highlighted as weak for Alanine, Arginine, and Phenylalanine. This is because of the high cutoff (90%) in `orbi_flag_weak_isotopocules()` which is appropriate for shot-noise analyses but simply for inspecting ratios it would be reasonable to examine the 2H signal at least for Alanine.

    data |> orbi_plot_isotopocule_coverage()

Isotopocule coverage

## Visualize satellite peaks

Show peaks that were flagged as satellite peaks.

    data |> orbi_plot_satellite_peaks()

Satellite peaks

## Visualize intensity vs time

    data |> orbi_plot_raw_data(
      isotopocules = "M0",
      y = intensity,
      y_scale = "log"
    )

Isotopocule intensity for M0 ion

# Shot noise

## Calculations

    # calculate ratios vs basepeak
    data_w_bp <-
      data |>
      orbi_define_basepeak("M0")

    # calculate shot noise
    shot_noise <-
      data_w_bp |>
      orbi_analyze_shot_noise()

    # export shot noise to an Excel file
    shot_noise |>
      orbi_export_data_to_excel("shot_noise.xlsx")

## Table

    # example of the first few rows of the shot-noise calculations
    shot_noise |>
      arrange(compound, isotopocule, scan.no) |>
      select(compound, scan.no, time.min, isotopocule,
             ratio, ratio_rel_se.permil, shot_noise.permil) |>
      head(10) |>
      knitr::kable()

compound | scan.no | time.min | isotopocule | ratio | ratio_rel_se.permil | shot_noise.permil
--- | --- | --- | --- | --- | --- | ---
Alanine | 1 | 0.059 | 15N | 0.0062453 | NaN | 73.71127
Alanine | 2 | 0.102 | 15N | 0.0060919 | 12.43207 | 52.42764
Alanine | 3 | 0.146 | 15N | 0.0068807 | 37.74616 | 42.08467
Alanine | 4 | 0.189 | 15N | 0.0059526 | 32.61878 | 36.78579
Alanine | 5 | 0.233 | 15N | 0.0060549 | 26.57095 | 32.90351
Alanine | 6 | 0.277 | 15N | 0.0055040 | 29.99353 | 30.32862
Alanine | 7 | 0.320 | 15N | 0.0060244 | 25.50106 | 28.18264
Alanine | 8 | 0.364 | 15N | 0.0065182 | 23.43771 | 26.31067
Alanine | 9 | 0.408 | 15N | 0.0064846 | 21.36449 | 24.76418
Alanine | 10 | 0.451 | 15N | 0.0061980 | 19.10467 | 23.50447

## Visualize ratios vs time

    data_w_bp |> orbi_plot_raw_data(y = ratio)

Isotopocule ratios vs M0

## Visualize shot noise

    shot_noise |> orbi_plot_shot_noise()

amino acids shotnoise