{"id":32111273,"url":"https://github.com/baynec2/mspms","last_synced_at":"2026-02-23T04:32:00.042Z","repository":{"id":233050827,"uuid":"785819831","full_name":"baynec2/mspms","owner":"baynec2","description":"R package for the analysis of Multiplex Substrate Profiling by Mass Spectrometry for Proteases (MSP-MS) Data","archived":false,"fork":false,"pushed_at":"2025-11-12T20:46:17.000Z","size":57086,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-12T22:22:01.481Z","etag":null,"topics":["protease","proteomics","proteomics-data-analysis"],"latest_commit_sha":null,"homepage":"","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baynec2.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-12T17:34:23.000Z","updated_at":"2025-11-12T20:46:22.000Z","dependencies_parsed_at":"2024-05-02T22:54:58.719Z","dependency_job_id":"32d8dc6c-4db0-4bd1-983d-3168cd432468","html_url":"https://github.com/baynec2/mspms","commit_stats":null,"previous_names":["baynec2/mspms"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/baynec2/mspms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baynec2%2Fmspms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baynec2%2Fmspms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baynec2%2Fmspms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baynec2%2Fmspms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baynec2","download_url":"https://codeload.github.com/baynec2/mspms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baynec2%2Fmspms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T02:24:00.660Z","status":"ssl_error","status_checked_at":"2026-02-23T02:22:56.087Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["protease","proteomics","proteomics-data-analysis"],"created_at":"2025-10-20T14:22:12.911Z","updated_at":"2026-02-23T04:32:00.033Z","avatar_url":"https://github.com/baynec2.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\"\n)\n\nggplot2::theme_set(\n  ggplot2::theme_minimal()\n)\n```\n\n\u003cimg src=\"man/figures/logo.png\" align=\"right\" width=\"170\"/\u003e\n\n# `r BiocStyle::Biocpkg(\"mspms\")`\n\n\u003c!-- badges: start --\u003e\n\n[![R-CMD-check](https://github.com/baynec2/mspms/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/baynec2/mspms/actions/workflows/R-CMD-check.yaml)\n[![Codecov test\ncoverage](https://codecov.io/gh/baynec2/mspms/branch/main/graph/badge.svg)](https://app.codecov.io/gh/baynec2/mspms?branch=main)\n[![Bioc release status](http://www.bioconductor.org/shields/build/release/bioc/mspms.svg)](https://bioconductor.org/checkResults/release/bioc-LATEST/mspms)\n[![Bioc devel status](http://www.bioconductor.org/shields/build/devel/bioc/mspms.svg)](https://bioconductor.org/checkResults/devel/bioc-LATEST/mspms)\n[![Bioc downloads rank](https://bioconductor.org/shields/downloads/release/mspms.svg)](http://bioconductor.org/packages/stats/bioc/mspms/)\n[![Bioc support](https://bioconductor.org/shields/posts/mspms.svg)](https://support.bioconductor.org/tag/mspms)\n[![Bioc history](https://bioconductor.org/shields/years-in-bioc/mspms.svg)](https://bioconductor.org/packages/release/bioc/html/mspms.html#since)\n[![Bioc last commit](https://bioconductor.org/shields/lastcommit/devel/bioc/mspms.svg)](http://bioconductor.org/checkResults/devel/bioc-LATEST/mspms/)\n[![Bioc dependencies](https://bioconductor.org/shields/dependencies/release/mspms.svg)](https://bioconductor.org/packages/release/bioc/html/mspms.html#since)\n\u003c!-- badges: end --\u003e\n\n## Introduction\n\nThe goal of `r BiocStyle::Biocpkg(\"mspms\")` is provide a R Package that can be used to easily and\nreproducibly analyze data resulting from the [Multiplex Substrate Profiling by\nMass Spectrometry (MSP-MS) method](https://pubmed.ncbi.nlm.nih.gov/36948708/).\n\nAdditionally, we provide a [graphical user interface powered by shiny\napps](https://github.com/baynec2/mspms-shiny) that allows for a user to\nutilize the method without requiring any R coding knowledge.\n\nMultiplex Substrate Profiling by Mass Spectrometry\n[(MSP-MS)](https://pubmed.ncbi.nlm.nih.gov/36948708/) is a powerful method used\nto determine the substrate specificity of proteases. This method is of interest\nfor groups interested in the study of proteases and their role as regulators of\nbiological pathways, whether applied to the study of disease states, the\ndevelopment of diagnostic and prognostic tests, generation of tool compounds, or\nrational design of protease targeting therapeutics. Analysis of the MS based\ndata produced by MSP-MS is a multi-step process involving detection and\nquantification of peptides, imputation, normalization, cleavage sequence\nidentification, statistics, and data visualizations. This process can be\nchallenging, especially for scientists with limited programming experience. To\novercome these issues, we developed the mspms R package to facilitate the\nanalysis of MSP-MS data utilizing good software/data analysis practices.\n\nmspms differs from existing proteomics packages that are available in the\nBioconductor project in that it is specifically designed to analyze MSP-MS data.\nThis involves unique preprocessing steps and data visualizations tailored to\nthis specific assay.\n\nIn order to do so, mspms uses several excellent packages from the Bioconductor\nproject to provide a framework to easily and reproducibly analyze MSP-MS data.\nThese include:\n\n-   `r BiocStyle::Biocpkg(\"QFeatures\")`: management and processing of peptide \nquantitative features and sample metadata.\n    \n-   `r BiocStyle::Biocpkg(\"limma\")`: Powerful linear models and \nempirical Bayesian methods for omics data.\n\n-   `r BiocStyle::Biocpkg(\"MsCoreUtils\")`: log2 transformation, \nimputation (QRILC), and normalization (center.median).\n\nSome excellent non-Bioconductor packages are also utilized.\n\n-   *ggplot2*: data visualizations\n\n-   *heatmaply*: interactive heatmaps\n\n-   *rstatix*: conduct statistics\n\n-   *ggseqlogo*: iceLogo motif visualization.\n\n-   *downloadthis*: gives users the ability to download data from standard .html\n    report generated by mspms::generate_report().\n\nLastly, *mspms* takes advantage of iceLogos ([Colaert, N. et al. Nature Methods\n6,786-787 (2009)](http://www.ncbi.nlm.nih.gov/pubmed/19876014)) to visualize\nover represented amino acid motifs relative to a background set by implementing\ncomponents of the Java software in R.\n\n## Installation\n\nYou can install the development version from github.\n\n```{r,eval = FALSE}\ndevtools::install_github(\"baynec2/mspms\")\n```\n\n## Quickstart\n\nTo generate a general report using your own data, run the following code. It\nrequires data that has been prepared for mspms data analysis by a converter\nfunction. For more information see subsequent sections.\n\n```{r,eval = FALSE}\nmspms::generate_report(\n  prepared_data = mspms::peaks_prepared_data,\n  outdir = \"../Desktop/mspms_report\"\n)\n```\n\nThe above command will generate a .html file containing a generic mspms\nanalysis.\n\nThere is much more that can be done using the mspms package- see the following\nsections for more information.\n\n## Overview\n\nFunctions in this package are logically divided into 4 broad types of functions.\n\n1.  Pre-processing data. These functions are focused on getting all of the data\n    necessary for a mspms analysis together and in a consistent format.\n\n2.  Data processing. These functions allow the user to process the proteomics \ndata (imputation, normalization, etc).\n\n3.  Statistics. These methods allow the user to perform basic statistics on the \nnormalized/processed data.\n\n4.  Data visualization. These functions allow the user to visualize the data.\n\n**Note that only a subset of functions are exported to the user.** Helper functions can be found in the\n[preprocessing_helper_functions.R](https://github.com/baynec2/mspms/blob/main/R/preprocessing_helper_functions.R),\n[processing_helper_functions.R](https://github.com/baynec2/mspms/blob/main/R/processing_helper_functions.R),[icelogo_helper_functions.R](https://github.com/baynec2/mspms/blob/main/R/iceLogo_helper_fuctions.R), [statistics_helper_functions.R](https://github.com/baynec2/mspms/blob/main/R/statistics_helper_functions.R), and [iceLogo_helper_functions.R](https://github.com/baynec2/mspms/blob/main/R/iceLogo_helper_fuctions.R) files. \n\nThese functions were not intended to be directly used by the user and are not \nexported in an effort to make the package API cleaner and more intuitive.\n\n## Pre-processing data\n\nPre-processing data here refers to standardizing the data exported from\ndifferent software solutions for analyzing mass spectrometry-based proteomics\nand adding useful information specific to the MSP-MS assay.\n\nSpecifically, the data from the file exported from the upstream software is\nparsed to contain the **peptide** (detected peptide sequence, cleavages are\nrepresented as \"\\_\"), **library_id** (name of the peptide in the peptide library\neach detected peptide maps to), and intensities for each sample.\n\nInformation about each peptide relative to the peptide it was derived from is\nthen added. This includes the **cleavage_seq** (the motif the peptide a user\nspecified n residues up and down from the cleavage event), **cleavage_pos**\n(position of the peptide library the cleavage product was cleaved at ),\n**peptide_type** (whether the detected peptide is a cleavage product of the\npeptide library, or a full length member of the peptide library).\n\nAll of the information is then loaded as a QFeatures object along with colData\n(metadata about each sample) where it is stored as a SummarizedExperiment object\nnamed \"peptides\".\n\n### A note on colData\n\nAs briefly described above, the colData contains metadata describing the samples\nyou are trying to analyze.\n\n**It is very important that this contains at least the following columns: quantCols\",\"group\",\"condition\",and \"time\".**\n\nThe quantCols field contains the name of each sample. These names must match\nwhatever the samples are named in the files exported from the upstream\nproteomics software.\n\nThe group field contains text specifying what group each sample belongs to. All\nreplicate samples should have the same group name\n\nThe condition field contains the experimental conditions that vary in your\nMSP-MS experiment (this depends on the experimental question, could be type of\nprotease, the type of inhibitor, etc)\n\nThe time field contains the duration of incubation of your protease of interest\nwith the peptide library for each sample.\n\nAn example of a valid colData file is shown below.\n\n```{r}\ncolData \u003c- readr::read_csv(system.file(\"extdata/colData.csv\",\n  package = \"mspms\"\n))\n\nhead(colData)\n```\n\n### PEAKS\n\nAnalysis using a .csv exported from [PEAKS\nsoftware](https://www.bioinfor.com/peaks-studio/) is supported.\n\nan exported .csv file can be generated from PEAKS as follows:\n\n1.  Create a New Project in PEAKS.\\\n2.  Select data to add to PEAKS project.\\\n3.  Add data, rename samples, set correct parameters. • Highlight all the added\n    data.\\\n    • Select Create new sample for each file.\\\n    • Select appropriate instrument and fragmentation method.\\\n    • Set Enzyme to “None”.\\\n    • Rename samples according to enzymes, time points, and replicates.\\\n    • Can also ensure appropriate data is selected for these.\\\n    • Select “Data Refinement” to continue.\\\n4.  Data Refinement.\\\n    • On the top right, select MSP-MS as the predefined parameters.\\\n    • Parameters shown are what should be used for MSP-MS data analysis.\\\n    • Select “Identification” to continue.\\\n5.  Peptide Identification.\\\n    • On the top right, select MSP-MS as the predefined parameters.\\\n    • Parameters shown are what should be used for MSP-MS data analysis.\\\n    • Identification -\\\u003e Select Database -\\\u003e TPD_237.\\\n    • Identification -\\\u003e no PTMs.\\\n    • Can remove the PTMs by highlighting them and selecting Remove\\\n6.  Label Free Quantification.\\\n    • Make sure Label Free is selected.\\\n    • Group samples -\\\u003e add quadruplicates of samples to new group.\n\n```{r}\nlibrary(dplyr)\nlibrary(mspms)\n\n# File path of peaks lfq file\nlfq_filepath \u003c- system.file(\"extdata/peaks_protein-peptides-lfq.csv\",\n  package = \"mspms\"\n)\n\ncolData_filepath \u003c- system.file(\"extdata/colData.csv\", package = \"mspms\")\n\n# Prepare the data\npeaks_prepared_data \u003c- mspms::prepare_peaks(lfq_filepath,\n  colData_filepath,\n  quality_threshold = 0.3,\n  n_residues = 4\n)\n\npeaks_prepared_data\n```\n\n\n### Fragpipe\n\nData exported from [Fragpipe](https://github.com/Nesvilab/FragPipe) as a .tsv\nfile is supported.\n\nTo generate this file, run a [LFQ Fragpipe\nworkflow](https://fragpipe.nesvilab.org/docs/tutorial_lfq.html) using your\ndesired parameters (we recommend using match between runs).\n\nYou will find a file named \"combined_peptide.tsv\" in the output folder from\nFragpipe.\n\nThis can be loaded into mspms as follows:\n\n```{r}\ncombined_peptide_filepath \u003c- system.file(\"extdata/fragpipe_combined_peptide.tsv\",\n  package = \"mspms\"\n)\n\ncolData_filepath \u003c- system.file(\"extdata/colData.csv\", package = \"mspms\")\n\n\nfragpipe_prepared_data \u003c- prepare_fragpipe(\n  combined_peptide_filepath,\n  colData_filepath\n)\n\nfragpipe_prepared_data\n```\n### Proteome Discoverer\n\nAnalysis of a PeptideGroups.txt file exported from [proteome\ndiscoverer](https://www.thermofisher.com/us/en/home/industrial/mass-spectrometry/liquid-chromatography-mass-spectrometry-lc-ms/lc-ms-software/multi-omics-data-analysis/proteome-discoverer-software.html) \nis supported.\n\nTo generate this .txt file:\n1. Ensure that non-normalized/ non-scaled abundances are included in your \nPeptideGroup table.   \n2. File \u003e export \u003e To Text (tab delimited) \u003e Items to be exported - check \nthe Peptide Groups box \u003e Export.   \n\nNote that the fileIDs of each sample in proteome discoverer (By default \nF1 - Fn) must match the quantCols in colData.   \n\n```{r}\npeptide_groups_filepath \u003c- system.file(\n  \"extdata/proteome_discoverer_PeptideGroups.txt\",\n  package = \"mspms\"\n)\n\ncolData_filepath \u003c- system.file(\"extdata/proteome_discover_colData.csv\",\n  package = \"mspms\"\n)\n\nprepared_pd_data \u003c- prepare_pd(peptide_groups_filepath, colData_filepath)\n\nprepared_pd_data\n```\n### Sage\n\nAnalysis of a lfq.tsv file exported from [sage](https://github.com/lazear/sage) is supported. We found this software a little harder to use than other solutions (No-GUI), however it is completly open-source, free, and by far the fastest!\n\n```{r}\nsage_lfq_filepath \u003c- system.file(\n  \"extdata/sage_lfq.tsv\",\n  package = \"mspms\"\n)\n\ncolData_filepath \u003c- system.file(\"extdata/colData.csv\",\n  package = \"mspms\"\n)\n\nprepare_sage(sage_lfq_filepath, colData_filepath)\n```\n\n\n\n\n### DIA-NN\n\nWe are currently investigating how well the method works with DIA data. \nTo allow for this we have created a parser to make DIA-NN output compatible with\nmspms.\n\nNote that this could be used with DIA-NN alone or with Fragpipe (MSFragger-DIA) \nuses DIA-NN for quantification. Here we are using the file output from Fragpipe.\n\nUse caution when using this approach, we haven't thoroughly investigated how \nwell DIA data works with mspms using ground truth data yet.\n\n```{r}\nprecursor_filepath \u003c- system.file(\n  \"extdata/diann_report.pr_matrix.tsv\",\n  package = \"mspms\"\n)\ncolData_filepath \u003c- system.file(\n  \"extdata/diann_colData.csv\",\n  package = \"mspms\"\n)\n\nprepared_diann_data \u003c- prepare_diann(precursor_filepath, colData_filepath)\n\nprepared_diann_data\n```\n\n\n## Data Processing\n\nData processing includes imputation and normalization of the proteomics data.\nThis is all done in a QFeatures object using MSCoreUtils methods. Data from \neach step is stored as a SummarizedExperiment within the QFeatures object with\nthe indicated name. \n\n1. Data is first log2 transformed (\"peptides_log\").   \n2. Data is normalized using the center.median method (\"peptides_log_norm\").  \n3. Missing values are then imputed using the QRILC method \n(\"peptides_log_impute_norm\"). \n4. Data is then reverse log2 transformed (\"peptides_norm\"). \n\n```{r}\nset.seed(2)\nprocessed_qf \u003c- process_qf(peaks_prepared_data)\nprocessed_qf\n```\n\n## Statistics\n\nMSP-MS analysis has traditionally used T-tests to what peptides are\nsignificantly different relative to T0. The authors of the assay suggest using a\nT-test derived FDR adjusted p value threshold \\\u003c= 0.05 and log2 fold change\nthreshold \\\u003e= 3. \n\nWe recommend that the user now uses a Limma based approach that uses a linear \nmodeling and empirical Bayesian approach. This is a approach well suited to \nproteomics data that is powerful, flexible, and fast.\n\nThis limma based approach (with stats calculated relative to time 0 for each \ncondition) can be utilized as follows:\n\n```{r}\nlimma_stats \u003c- mspms::limma_stats(processed_qf = processed_qf)\n```\n\nAlternatively, we provide a user-friendly implementation of the traditional\nt-test approach as follows:\n\n```{r}\nlog2fc_t_test_data \u003c- mspms::log2fc_t_test(processed_qf = processed_qf)\n```\n\n\n## Data Visualizations\n\nWe provide a number of data visualizations as part of the mspms package.\n\n### QC Checks\n\nA critical initial step in MSP-MS data analysis is a rigorous quality control\nassessment. Given the reliance on a specific peptide library, calculating the\npercentage of library peptides detected in each sample provides a\nstraightforward yet powerful indicator of data integrity. Anomalously low\ndetection rates signal potential instrument or experimental problems.\n\nWe can see the percentage of the peptide library that were undetected among each\ngroup of replicates as follows (for full length peptides a threshold of \\~\\\u003c 10\nis considered good while for cleavage products a threshold \\~\\\u003c 5 is good):\n\n```{r}\nplot_qc_check(processed_qf,\n  full_length_threshold = 10,\n  cleavage_product_threshold = 5\n)\n```\n\nWe can also see in what percentage of samples each peptide in the peptide\nlibrary were undetected in.\n\n```{r}\nplot_nd_peptides(processed_qf)\n```\n\n### Tidying our data\n\nWe can then convert our QFeatures object into a \"long\" tibble using the \nmspms_tidy function.\n\nThis makes the data easy to manipulate prior to ggplot2 or plotly based plotting\nfunctions. \n\n```{r}\nmspms_tidy_data \u003c- mspms_tidy(processed_qf)\n```\n\n### Heatmap\n\nWe can inspect our data using an interactive heatmap as follows:\n\n```{r,eval = FALSE}\nplot_heatmap(mspms_tidy_data)\n```\n\nnote that the interactive plot is not returned in this vignette \ndue to size constraints. \n\n### PCA\n\nWe can also inspect our data using a PCA as follows.\n\n```{r}\nplot_pca(mspms_tidy_data, value_colname = \"peptides_norm\")\n```\n\n### Volcano plots\n\n\nWe can generate volcano plots showing the significant peptides from each\ncondition as follows:\n\n```{r}\nplot_volcano(log2fc_t_test_data)\n```\n\n### Cleavage Position Plots\n\nWe can also create plots showing the number of times we observe a cleavage at\neach position of the peptide_library among a set of peptides of interest.\n\nWe can do this as follows:\n\n```{r}\nsig_cleavage_data \u003c- log2fc_t_test_data %\u003e%\n  dplyr::filter(p.adj \u003c= 0.05, log2fc \u003e 3)\n\np1 \u003c- mspms::plot_cleavages_per_pos(sig_cleavage_data)\n\np1\n```\n\n### iceLogo\n\n[Icelogos](https://www.nature.com/articles/nmeth1109-786) are a method for\nvisualizing conserved patterns in protein sequences through probability theory.\n\nAs part of the mspms R package, we have implemented the logic to generate\n[iceLogos](https://genesis.ugent.be/uvpublicdata/icelogo/iceLogo.pdf) in R.\n\nTo use this, we first have to define a vector of cleavage sequences that we are\ninterested in. We will do this for the significant CatA cleavages below.\n\n```{r}\ncatA_sig_cleavages \u003c- log2fc_t_test_data %\u003e%\n  dplyr::filter(p.adj \u003c= 0.05, log2fc \u003e 3) %\u003e%\n  dplyr::filter(condition == \"CatA\") %\u003e%\n  dplyr::pull(cleavage_seq) %\u003e%\n  unique()\n```\n\nWe also need to know all of the possible cleavages we could see among our\npeptide library. We can generate that as below:\n\n```{r}\nall_possible_8mers_from_228_library \u003c- calculate_all_cleavages(\n  mspms::peptide_library$library_real_sequence,\n  n_AA_after_cleavage = 4\n)\n```\n\nWe can then generate an iceLogo relative to the background of all possible\ncleavages in our peptide library like so:\n\n```{r}\nplot_icelogo(catA_sig_cleavages,\n  background_universe = all_possible_8mers_from_228_library\n)\n```\n\nWe also provide a function that conveniently plots all icelogos from all\nconditions from the experiment all together.\n\n```{r}\nsig_cleavage_data \u003c- log2fc_t_test_data %\u003e%\n  dplyr::filter(p.adj \u003c= 0.05, log2fc \u003e 3)\n\nplot_all_icelogos(sig_cleavage_data)\n```\n\n### Plotting a Time Course\n\nWe can also plot the intensities of peptides of interest over time.\n\nFirst we need to define which peptides we are interested in. Here we will use\nthe t-test results, and look at the peptide with the max log2fc.\n\n```{r}\nmax_log2fc_pep \u003c- log2fc_t_test_data %\u003e%\n  dplyr::filter(p.adj \u003c= 0.05, log2fc \u003e 3) %\u003e%\n  dplyr::filter(log2fc == max(log2fc)) %\u003e%\n  pull(peptide)\n```\n\nWe can then filter our tidy mspms data to only include this peptide and plot\n\n```{r}\np1 \u003c- mspms_tidy_data %\u003e%\n  dplyr::filter(peptide == max_log2fc_pep) %\u003e%\n  plot_time_course()\n\np1\n```\n\n\n```{r}\nsessionInfo()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaynec2%2Fmspms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaynec2%2Fmspms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaynec2%2Fmspms/lists"}