From ae3105dad9c618af79278fc28b1a90d1a906f6a6 Mon Sep 17 00:00:00 2001 From: Elena Krismer <70535771+elena-krismer@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:54:22 +0200 Subject: [PATCH 01/17] fix cran malformat error --- R/try_query.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/R/try_query.R b/R/try_query.R index 8016a00b..42798def 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -31,6 +31,12 @@ try_query <- stop("The timeout cannot be less than 1 second.") } + # Check if the URL is valid + parsed_url <- httr::parse_url(url) + if (is.null(parsed_url$scheme) || is.null(parsed_url$hostname)) { + stop("The provided URL is not valid. Please check the format.") + } + # Check if there is an internet connection first if (!curl::has_internet()) { if (!silent) message("\nNo internet connection.") From fde317e250184c4d41c7b25bb9f413c284c749d0 Mon Sep 17 00:00:00 2001 From: Elena Krismer <70535771+elena-krismer@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:56:50 +0200 Subject: [PATCH 02/17] try_query update add to news --- NEWS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NEWS.md b/NEWS.md index f947cda2..be684c68 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# protti *** + +## Bug fixes +* `try_query()` now checks if a valid URL is provided before attempting to download data. + # protti 0.9.0 ## New features From 57a64475409bd95402e2e558efc5b389c6cca751 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sun, 29 Sep 2024 20:30:24 +0200 Subject: [PATCH 03/17] fix vroom problem The issue was that the uniprot data seems to now be gziped. I handle this case now in try_query. Not sure if it is generally handled for any potential case but it at least works for uniprot. --- DESCRIPTION | 2 +- NAMESPACE | 4 ++++ R/try_query.R | 35 +++++++++++++++++++++++++++++++++-- man/try_query.Rd | 3 +-- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0faf4c66..d2b5740d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -43,7 +43,7 @@ Imports: methods, R.utils, stats -RoxygenNote: 7.3.1 +RoxygenNote: 7.3.2 Suggests: testthat, covr, diff --git a/NAMESPACE b/NAMESPACE index 09754811..d81a3a5d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -116,6 +116,7 @@ importFrom(httr,modify_url) importFrom(httr,timeout) importFrom(janitor,clean_names) importFrom(janitor,make_clean_names) +importFrom(jsonlite,fromJSON) importFrom(magrittr,"%>%") importFrom(methods,is) importFrom(plotly,ggplotly) @@ -134,6 +135,7 @@ importFrom(purrr,pluck) importFrom(purrr,pmap) importFrom(purrr,reduce) importFrom(purrr,set_names) +importFrom(readr,read_csv) importFrom(readr,read_tsv) importFrom(readr,write_csv) importFrom(readr,write_tsv) @@ -191,3 +193,5 @@ importFrom(utils,data) importFrom(utils,download.file) importFrom(utils,head) importFrom(utils,untar) +importFrom(xml2,read_html) +importFrom(xml2,read_xml) diff --git a/R/try_query.R b/R/try_query.R index 42798def..27079134 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -13,7 +13,6 @@ #' @param type a character value that specifies the type of data at the target URL. Options are #' all options that can be supplied to httr::content, these include e.g. #' "text/tab-separated-values", "application/json" and "txt/csv". Default is "text/tab-separated-values". -#' Default is "tab-separated-values". #' @param timeout a numeric value that specifies the maximum request time. Default is 60 seconds. #' @param accept a character value that specifies the type of data that should be sent by the API if #' it uses content negotiation. The default is NULL and it should only be set for APIs that use @@ -22,6 +21,9 @@ #' #' @importFrom curl has_internet #' @importFrom httr GET timeout http_error message_for_status http_status content accept +#' @importFrom readr read_tsv read_csv +#' @importFrom jsonlite fromJSON +#' @importFrom xml2 read_html read_xml #' #' @return A data frame that contains the table from the url. try_query <- @@ -94,7 +96,36 @@ try_query <- # Change variable to not show progress if readr is used options(readr.show_progress = FALSE) - result <- suppressMessages(httr::content(query_result, type = type, encoding = "UTF-8", ...)) + # Check if the content is gzip compressed + if (query_result$headers[["content-encoding"]] == "gzip") { + # Retrieve the content as raw bytes using httr::content + raw_content <- httr::content(query_result, type = "raw") + + # Decompress the raw content using base R's `memDecompress` + decompressed_content <- memDecompress(raw_content, type = "gzip") + + # Convert the raw bytes to a character string + text_content <- rawToChar(decompressed_content) + + # Read the decompressed content based on the specified type + if (type == "text/tab-separated-values") { + result <- readr::read_tsv(text_content, ...) + } else if (type == "text/html") { + result <- xml2::read_html(text_content, ...) + } else if (type == "text/xml") { + result <- xml2::read_xml(text_content, ...) + } else if (type == "text/csv" || type == "txt/csv") { + result <- readr::read_csv(text_content, ...) + } else if (type == "application/json") { + result <- jsonlite::fromJSON(text_content, ...) # Using jsonlite for JSON parsing + } else if (type == "text") { + result <- text_content # Return raw text as-is + } else { + stop("Unsupported content type: ", type) + } + } else { + result <- suppressMessages(httr::content(query_result, type = type, encoding = "UTF-8", ...)) + } return(result) } diff --git a/man/try_query.Rd b/man/try_query.Rd index 90d61467..cb9a64aa 100644 --- a/man/try_query.Rd +++ b/man/try_query.Rd @@ -26,8 +26,7 @@ that failed.} \item{type}{a character value that specifies the type of data at the target URL. Options are all options that can be supplied to httr::content, these include e.g. -"text/tab-separated-values", "application/json" and "txt/csv". Default is "text/tab-separated-values". -Default is "tab-separated-values".} +"text/tab-separated-values", "application/json" and "txt/csv". Default is "text/tab-separated-values".} \item{timeout}{a numeric value that specifies the maximum request time. Default is 60 seconds.} From badce14f92cbadba787c3073221fbb221d7c5449 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sun, 29 Sep 2024 21:39:54 +0200 Subject: [PATCH 04/17] Add xml2 and jsonlite to suggests --- DESCRIPTION | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index d2b5740d..81db7349 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -67,7 +67,9 @@ Suggests: iq, scales, farver, - ggforce + ggforce, + xml2, + jsonlite Depends: R (>= 4.0) URL: https://github.com/jpquast/protti, https://jpquast.github.io/protti/ From d4674f065f3dbeab6dc1e3735c4bec11e44ddd71 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sun, 29 Sep 2024 22:03:37 +0200 Subject: [PATCH 05/17] Fixed another bug in try_query --- R/try_query.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/try_query.R b/R/try_query.R index 27079134..eb3ad46b 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -97,7 +97,7 @@ try_query <- options(readr.show_progress = FALSE) # Check if the content is gzip compressed - if (query_result$headers[["content-encoding"]] == "gzip") { + if (!is.null(query_result$headers[["content-encoding"]]) && query_result$headers[["content-encoding"]] == "gzip") { # Retrieve the content as raw bytes using httr::content raw_content <- httr::content(query_result, type = "raw") From 0c6fe0dac48aacde960de6f0d5271ba93806887b Mon Sep 17 00:00:00 2001 From: elena-krismer Date: Thu, 17 Oct 2024 16:44:19 +0000 Subject: [PATCH 06/17] Style code (GHA) --- R/try_query.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/try_query.R b/R/try_query.R index eb3ad46b..de4ce8d7 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -117,9 +117,9 @@ try_query <- } else if (type == "text/csv" || type == "txt/csv") { result <- readr::read_csv(text_content, ...) } else if (type == "application/json") { - result <- jsonlite::fromJSON(text_content, ...) # Using jsonlite for JSON parsing + result <- jsonlite::fromJSON(text_content, ...) # Using jsonlite for JSON parsing } else if (type == "text") { - result <- text_content # Return raw text as-is + result <- text_content # Return raw text as-is } else { stop("Unsupported content type: ", type) } From b66dafbfd520f895f9a407200de7cbf8e53cd98a Mon Sep 17 00:00:00 2001 From: Elena Krismer <70535771+elena-krismer@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:49:45 +0200 Subject: [PATCH 07/17] fix decompression --- R/try_query.R | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/R/try_query.R b/R/try_query.R index de4ce8d7..3f7b3a50 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -96,11 +96,13 @@ try_query <- # Change variable to not show progress if readr is used options(readr.show_progress = FALSE) - # Check if the content is gzip compressed - if (!is.null(query_result$headers[["content-encoding"]]) && query_result$headers[["content-encoding"]] == "gzip") { - # Retrieve the content as raw bytes using httr::content - raw_content <- httr::content(query_result, type = "raw") + # Retrieve the content as raw bytes using httr::content + raw_content <- httr::content(query_result, type = "raw") + # Check for gzip magic number (1f 8b) before decompression + compressed <- length(raw_content) >= 2 && raw_content[1] == as.raw(0x1f) && raw_content[2] == as.raw(0x8b) + # Check if the content is gzip compressed + if (!is.null(query_result$headers[["content-encoding"]]) && query_result$headers[["content-encoding"]] == "gzip" && compressed) { # Decompress the raw content using base R's `memDecompress` decompressed_content <- memDecompress(raw_content, type = "gzip") From ea69a89b4a55ad59479eee6195b37af58dcc41a3 Mon Sep 17 00:00:00 2001 From: Elena Krismer <70535771+elena-krismer@users.noreply.github.com> Date: Fri, 18 Oct 2024 18:35:21 +0200 Subject: [PATCH 08/17] move xml2 and jsonlite to imports --- DESCRIPTION | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 81db7349..55458e24 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -42,7 +42,9 @@ Imports: httr, methods, R.utils, - stats + stats, + xml2, + jsonlite RoxygenNote: 7.3.2 Suggests: testthat, @@ -67,9 +69,7 @@ Suggests: iq, scales, farver, - ggforce, - xml2, - jsonlite + ggforce Depends: R (>= 4.0) URL: https://github.com/jpquast/protti, https://jpquast.github.io/protti/ From 33cc8ee35286a5be808b30852045f83d9458edf1 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sat, 19 Oct 2024 12:15:14 +0200 Subject: [PATCH 09/17] Corrected try_query error handling --- DESCRIPTION | 10 +++++----- NAMESPACE | 3 --- NEWS.md | 2 +- R/try_query.R | 17 ++++++++--------- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 55458e24..5a443cf7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: protti Title: Bottom-Up Proteomics and LiP-MS Quality Control and Data Analysis Tools -Version: 0.9.0 +Version: 0.9.0.9000 Authors@R: c(person(given = "Jan-Philipp", family = "Quast", @@ -42,9 +42,7 @@ Imports: httr, methods, R.utils, - stats, - xml2, - jsonlite + stats RoxygenNote: 7.3.2 Suggests: testthat, @@ -69,7 +67,9 @@ Suggests: iq, scales, farver, - ggforce + ggforce, + xml2, + jsonlite Depends: R (>= 4.0) URL: https://github.com/jpquast/protti, https://jpquast.github.io/protti/ diff --git a/NAMESPACE b/NAMESPACE index d81a3a5d..e4e57730 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -116,7 +116,6 @@ importFrom(httr,modify_url) importFrom(httr,timeout) importFrom(janitor,clean_names) importFrom(janitor,make_clean_names) -importFrom(jsonlite,fromJSON) importFrom(magrittr,"%>%") importFrom(methods,is) importFrom(plotly,ggplotly) @@ -193,5 +192,3 @@ importFrom(utils,data) importFrom(utils,download.file) importFrom(utils,head) importFrom(utils,untar) -importFrom(xml2,read_html) -importFrom(xml2,read_xml) diff --git a/NEWS.md b/NEWS.md index be684c68..1c25e436 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,7 @@ # protti *** ## Bug fixes -* `try_query()` now checks if a valid URL is provided before attempting to download data. +* `try_query()` now correctly handles errors that don't return a response object. We also handle gzip decompression problems better since some databases compressed responses were not handled correctly. # protti 0.9.0 diff --git a/R/try_query.R b/R/try_query.R index 3f7b3a50..77b4403f 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -22,8 +22,6 @@ #' @importFrom curl has_internet #' @importFrom httr GET timeout http_error message_for_status http_status content accept #' @importFrom readr read_tsv read_csv -#' @importFrom jsonlite fromJSON -#' @importFrom xml2 read_html read_xml #' #' @return A data frame that contains the table from the url. try_query <- @@ -33,12 +31,6 @@ try_query <- stop("The timeout cannot be less than 1 second.") } - # Check if the URL is valid - parsed_url <- httr::parse_url(url) - if (is.null(parsed_url$scheme) || is.null(parsed_url$hostname)) { - stop("The provided URL is not valid. Please check the format.") - } - # Check if there is an internet connection first if (!curl::has_internet()) { if (!silent) message("\nNo internet connection.") @@ -85,11 +77,18 @@ try_query <- return(invisible("No internet connection")) } - if (httr::http_error(query_result)) { + # If response was an error return that error message + if (inherits(query_result, "response") && httr::http_error(query_result)) { if (!silent) httr::message_for_status(query_result) return(invisible(httr::http_status(query_result)$message)) } + # Handle other types of errors separately from query errors + if(inherits(query_result, "character")) { + if (!silent) message(query_result) + return(invisible(query_result)) + } + # Record readr progress variable to set back later readr_show_progress <- getOption("readr.show_progress") on.exit(options(readr.show_progress = readr_show_progress)) From 02d01a2fcce071fda0ed465655fb30535310a38f Mon Sep 17 00:00:00 2001 From: jpquast Date: Sat, 19 Oct 2024 10:17:15 +0000 Subject: [PATCH 10/17] Style code (GHA) --- R/try_query.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/try_query.R b/R/try_query.R index 77b4403f..2199c32b 100644 --- a/R/try_query.R +++ b/R/try_query.R @@ -84,7 +84,7 @@ try_query <- } # Handle other types of errors separately from query errors - if(inherits(query_result, "character")) { + if (inherits(query_result, "character")) { if (!silent) message(query_result) return(invisible(query_result)) } From a64c5c5538d94a8fa003711466484a7bbae41633 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sat, 19 Oct 2024 12:57:39 +0200 Subject: [PATCH 11/17] Fix mobidb test --- tests/testthat/test-fetch_extract_and_enrichment_functions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-fetch_extract_and_enrichment_functions.R b/tests/testthat/test-fetch_extract_and_enrichment_functions.R index 6f420b21..d24ea4f3 100644 --- a/tests/testthat/test-fetch_extract_and_enrichment_functions.R +++ b/tests/testthat/test-fetch_extract_and_enrichment_functions.R @@ -21,7 +21,7 @@ if (Sys.getenv("TEST_PROTTI") == "true") { unis <- c("iRT", "P25437", "P30870", "P0A6P9") expect_warning(mobidb <- fetch_mobidb(unis)) expect_is(mobidb, "data.frame") - expect_equal(nrow(mobidb), 259) + expect_equal(nrow(mobidb), 221) expect_equal(ncol(mobidb), 6) }) From 7e0d08ff917124dd33161b74090c0d49bdcbc23e Mon Sep 17 00:00:00 2001 From: jpquast Date: Sat, 19 Oct 2024 14:09:17 +0200 Subject: [PATCH 12/17] Bump version and update cran-comments --- DESCRIPTION | 2 +- cran-comments.md | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 5a443cf7..9b857d43 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: protti Title: Bottom-Up Proteomics and LiP-MS Quality Control and Data Analysis Tools -Version: 0.9.0.9000 +Version: 0.9.1 Authors@R: c(person(given = "Jan-Philipp", family = "Quast", diff --git a/cran-comments.md b/cran-comments.md index 9356edf4..d337fcd4 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,9 +1,7 @@ ## Submission * We specifically addressed and fixed the issue raised by Prof. Brian Ripley: - * The `analyse_functional_network()` function did not fail gracefully. - * We implemented a `try_catch()` that specifically rescues the cases in which the `STRINGdb` package does not fail gracefully. This fixes the issue. -* Additionally we added new features and fixed bugs. + * We updated `try_query()` to also handle request unrelated errors successfully. ## Test environments * macOS-latest (on GitHub actions), R 4.4.1 From 2bf4395b81a21ba51b766b37ca8191b448887674 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sat, 19 Oct 2024 15:27:12 +0200 Subject: [PATCH 13/17] Update version in NEWS --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 1c25e436..f4e23d7e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# protti *** +# protti 0.9.1 ## Bug fixes * `try_query()` now correctly handles errors that don't return a response object. We also handle gzip decompression problems better since some databases compressed responses were not handled correctly. From 04de6986a09491f013d197d548642c6ea43eae86 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sat, 19 Oct 2024 15:56:32 +0200 Subject: [PATCH 14/17] Update links --- R/calculate_protein_abundance.R | 2 +- R/data.R | 4 +- R/fetch_eco.R | 2 +- R/fetch_mobidb.R | 2 +- README.Rmd | 2 +- README.md | 110 +++++++++--------- man/calculate_protein_abundance.Rd | 2 +- man/fetch_eco.Rd | 2 +- man/fetch_mobidb.Rd | 2 +- man/figures/README-volcano-1.png | Bin 50027 -> 50010 bytes man/ptsi_pgk.Rd | 2 +- man/rapamycin_10uM.Rd | 2 +- .../data_analysis_dose_response_workflow.Rmd | 8 +- ...nalysis_single_dose_treatment_workflow.Rmd | 2 +- vignettes/input_preparation_workflow.Rmd | 2 +- 15 files changed, 75 insertions(+), 69 deletions(-) diff --git a/R/calculate_protein_abundance.R b/R/calculate_protein_abundance.R index 5fb71220..f7638fc5 100644 --- a/R/calculate_protein_abundance.R +++ b/R/calculate_protein_abundance.R @@ -22,7 +22,7 @@ #' intensities as the protein abundance. Another option is \code{"iq"}, which performs protein #' quantification based on a maximal peptide ratio extraction algorithm that is adapted from the #' MaxLFQ algorithm of the MaxQuant software. Functions from the -#' \href{https://academic.oup.com/bioinformatics/article/36/8/2611/5697917}{\code{iq}} package are +#' \href{https://doi.org/10.1093/bioinformatics/btz961}{\code{iq}} package are #' used. Default is \code{"iq"}. #' @param for_plot a logical value indicating whether the result should be only protein intensities #' or protein intensities together with precursor intensities that can be used for plotting using diff --git a/R/data.R b/R/data.R index ae4e9c0d..62226e87 100644 --- a/R/data.R +++ b/R/data.R @@ -25,7 +25,7 @@ #' Rapamycin 10 uM example data #' #' Rapamycin example data used for the vignette about binary control/treated data. The data was -#' obtained from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} +#' obtained from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} #' and corresponds to experiment 18. FKBP1A the rapamycin binding protein and 49 other randomly #' sampled proteins were used for this example dataset. Furthermore, only the DMSO control and the #' 10 uM condition were used. @@ -53,7 +53,7 @@ #' Structural analysis example data #' #' Example data used for the vignette about structural analysis. The data was obtained from -#' \href{https://www.sciencedirect.com/science/article/pii/S0092867420316913}{Cappelletti 2021} +#' \href{https://doi.org/10.1016/j.cell.2020.12.021}{Cappelletti 2021} #' and corresponds to two separate experiments. Both experiments were limited proteolyis coupled to #' mass spectrometry (LiP-MS) experiments conducted on purified proteins. The first protein is #' phosphoglycerate kinase 1 (pgk) and it was treated with 25mM 3-phosphoglyceric acid (3PG). diff --git a/R/fetch_eco.R b/R/fetch_eco.R index a2e6f994..bc964287 100644 --- a/R/fetch_eco.R +++ b/R/fetch_eco.R @@ -19,7 +19,7 @@ #' information." #' #' More information can be found in their -#' \href{https://academic.oup.com/nar/article/47/D1/D1186/5165344?login=true}{publication}. +#' \href{https://doi.org/10.1093/nar/gky1036}{publication}. #' #' @param return_relation a logical value that indicates if relational information should be returned instead #' the main descriptive information. This data can be used to check the relations of ECO terms to each other. diff --git a/R/fetch_mobidb.R b/R/fetch_mobidb.R index 7d6f1014..4e51de4e 100644 --- a/R/fetch_mobidb.R +++ b/R/fetch_mobidb.R @@ -17,7 +17,7 @@ #' @return A data frame that contains start and end positions for disordered and flexible protein #' regions. The \code{feature} column contains information on the source of this #' annotation. More information on the source can be found -#' \href{https://mobidb.bio.unipd.it/about/mobidb}{here}. +#' \href{https://mobidb.org/about/mobidb}{here}. #' @import progress #' @importFrom rlang .data #' @importFrom purrr map_dfr keep diff --git a/README.Rmd b/README.Rmd index 47dab585..3ac8c90a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -26,7 +26,7 @@ knitr::opts_chunk$set( The goal of **protti** is to provide flexible functions and workflows for proteomics quality control and data analysis, within a single, user-friendly package. It can be used for label-free DDA, DIA and SRM data generated with search tools and software such as Spectronaut, MaxQuant, Proteome Discoverer and Skyline. Both limited proteolysis mass spectrometry (LiP-MS) and regular bottom-up proteomics experiments can be analysed. -**protti** is developed and maintained by members of the lab of Paola Picotti at ETH Zurich. Our lab is focused on protein structural changes that occur in response to perturbations such as metabolite, drug and protein binding-events, as well as protein aggregation and enzyme activation ([Piazza 2018](https://www.sciencedirect.com/science/article/pii/S0092867417314484), [Piazza 2020](https://www.nature.com/articles/s41467-020-18071-x#additional-information), [Cappelletti, Hauser & Piazza 2021](https://www.sciencedirect.com/science/article/pii/S0092867420316913)). We have devoloped mass spectrometry-based structural and chemical proteomic methods aimed at monitoring protein conformational changes in the complex cellular milieu ([Feng 2014](https://www.nature.com/articles/nbt.2999)). +**protti** is developed and maintained by members of the lab of Paola Picotti at ETH Zurich. Our lab is focused on protein structural changes that occur in response to perturbations such as metabolite, drug and protein binding-events, as well as protein aggregation and enzyme activation ([Piazza 2018](https://doi.org/10.1016/j.cell.2017.12.006), [Piazza 2020](https://doi.org/10.1038/s41467-020-18071-x), [Cappelletti, Hauser & Piazza 2021](https://doi.org/10.1016/j.cell.2020.12.021)). We have devoloped mass spectrometry-based structural and chemical proteomic methods aimed at monitoring protein conformational changes in the complex cellular milieu ([Feng 2014](https://doi.org/10.1038/nbt.2999)). There is a wide range of functions **protti** provides to the user. The main areas of application are: diff --git a/README.md b/README.md index fb9cbde5..668df92e 100644 --- a/README.md +++ b/README.md @@ -27,16 +27,12 @@ be analysed. Picotti at ETH Zurich. Our lab is focused on protein structural changes that occur in response to perturbations such as metabolite, drug and protein binding-events, as well as protein aggregation and enzyme -activation ([Piazza -2018](https://www.sciencedirect.com/science/article/pii/S0092867417314484), -[Piazza -2020](https://www.nature.com/articles/s41467-020-18071-x#additional-information), -[Cappelletti, Hauser & Piazza -2021](https://www.sciencedirect.com/science/article/pii/S0092867420316913)). -We have devoloped mass spectrometry-based structural and chemical -proteomic methods aimed at monitoring protein conformational changes in -the complex cellular milieu ([Feng -2014](https://www.nature.com/articles/nbt.2999)). +activation ([Piazza 2018](https://doi.org/10.1016/j.cell.2017.12.006), +[Piazza 2020](https://doi.org/10.1038/s41467-020-18071-x), [Cappelletti, +Hauser & Piazza 2021](https://doi.org/10.1016/j.cell.2020.12.021)). We +have devoloped mass spectrometry-based structural and chemical proteomic +methods aimed at monitoring protein conformational changes in the +complex cellular milieu ([Feng 2014](https://doi.org/10.1038/nbt.2999)). There is a wide range of functions **protti** provides to the user. The main areas of application are: @@ -201,15 +197,17 @@ protein intensities. set.seed(42) # Makes example reproducible # Create synthetic data -data <- create_synthetic_data(n_proteins = 100, - frac_change = 0.05, - n_replicates = 4, - n_conditions = 2, - method = "effect_random", - additional_metadata = FALSE) - -# The method "effect_random" as opposed to "dose-response" just randomly samples -# the extend of the change of significantly changing peptides for each condition. +data <- create_synthetic_data( + n_proteins = 100, + frac_change = 0.05, + n_replicates = 4, + n_conditions = 2, + method = "effect_random", + additional_metadata = FALSE +) + +# The method "effect_random" as opposed to "dose-response" just randomly samples +# the extend of the change of significantly changing peptides for each condition. # They do not follow any trend and can go in any direction. ``` @@ -252,10 +250,12 @@ contains the normalised intensities. normalise it another time.* ``` r -normalised_data <- data %>% - normalise(sample = sample, - intensity_log2 = peptide_intensity_missing, - method = "median") +normalised_data <- data %>% + normalise( + sample = sample, + intensity_log2 = peptide_intensity_missing, + method = "median" + ) ``` #### Assign Missingness @@ -284,16 +284,18 @@ thresholds if you want to be more or less conservative with how many data points to retain. ``` r -data_missing <- normalised_data %>% - assign_missingness(sample = sample, - condition = condition, - grouping = peptide, - intensity = normalised_intensity_log2, - ref_condition = "condition_1", - retain_columns = c(protein, change_peptide)) - -# Next to the columns it generates, assign_missingness only contains the columns -# you provide as input in its output. If you want to retain additional columns you +data_missing <- normalised_data %>% + assign_missingness( + sample = sample, + condition = condition, + grouping = peptide, + intensity = normalised_intensity_log2, + ref_condition = "condition_1", + retain_columns = c(protein, change_peptide) + ) + +# Next to the columns it generates, assign_missingness only contains the columns +# you provide as input in its output. If you want to retain additional columns you # can provide them in the retain_columns argument. ``` @@ -317,16 +319,18 @@ missingness cutoffs also in order to define which comparisons are too incomplete to be trustworthy even if significant. ``` r -result <- data_missing %>% - calculate_diff_abundance(sample = sample, - condition = condition, - grouping = peptide, - intensity_log2 = normalised_intensity_log2, - missingness = missingness, - comparison = comparison, - filter_NA_missingness = TRUE, - method = "moderated_t-test", - retain_columns = c(protein, change_peptide)) +result <- data_missing %>% + calculate_diff_abundance( + sample = sample, + condition = condition, + grouping = peptide, + intensity_log2 = normalised_intensity_log2, + missingness = missingness, + comparison = comparison, + filter_NA_missingness = TRUE, + method = "moderated_t-test", + retain_columns = c(protein, change_peptide) + ) ``` Next we can use a Volcano plot to visualize significantly changing @@ -335,15 +339,17 @@ interactive plot with the `interactive` argument. Please note that this is not recommended for large datasets. ``` r -result %>% - volcano_plot(grouping = peptide, - log2FC = diff, - significance = pval, - method = "target", - target_column = change_peptide, - target = TRUE, - legend_label = "Ground Truth", - significance_cutoff = c(0.05, "adj_pval")) +result %>% + volcano_plot( + grouping = peptide, + log2FC = diff, + significance = pval, + method = "target", + target_column = change_peptide, + target = TRUE, + legend_label = "Ground Truth", + significance_cutoff = c(0.05, "adj_pval") + ) ``` diff --git a/man/calculate_protein_abundance.Rd b/man/calculate_protein_abundance.Rd index 7fac88ed..299717cc 100644 --- a/man/calculate_protein_abundance.Rd +++ b/man/calculate_protein_abundance.Rd @@ -43,7 +43,7 @@ calculated. Possible options include \code{"sum"}, which takes the sum of all pr intensities as the protein abundance. Another option is \code{"iq"}, which performs protein quantification based on a maximal peptide ratio extraction algorithm that is adapted from the MaxLFQ algorithm of the MaxQuant software. Functions from the -\href{https://academic.oup.com/bioinformatics/article/36/8/2611/5697917}{\code{iq}} package are +\href{https://doi.org/10.1093/bioinformatics/btz961}{\code{iq}} package are used. Default is \code{"iq"}.} \item{for_plot}{a logical value indicating whether the result should be only protein intensities diff --git a/man/fetch_eco.Rd b/man/fetch_eco.Rd index 7e24dc50..b073a5c7 100644 --- a/man/fetch_eco.Rd +++ b/man/fetch_eco.Rd @@ -48,7 +48,7 @@ essential to navigating the ever-growing (in size and complexity) corpus of scie information." More information can be found in their -\href{https://academic.oup.com/nar/article/47/D1/D1186/5165344?login=true}{publication}. +\href{https://doi.org/10.1093/nar/gky1036}{publication}. } \examples{ \donttest{ diff --git a/man/fetch_mobidb.Rd b/man/fetch_mobidb.Rd index eaa0ff10..accf3e0f 100644 --- a/man/fetch_mobidb.Rd +++ b/man/fetch_mobidb.Rd @@ -33,7 +33,7 @@ the data in case an error occurs. The default is 2.} A data frame that contains start and end positions for disordered and flexible protein regions. The \code{feature} column contains information on the source of this annotation. More information on the source can be found -\href{https://mobidb.bio.unipd.it/about/mobidb}{here}. +\href{https://mobidb.org/about/mobidb}{here}. } \description{ Fetches information about disordered and flexible protein regions from MobiDB. diff --git a/man/figures/README-volcano-1.png b/man/figures/README-volcano-1.png index a751d919f9d13eceb59c84a019b964c6ad112f3c..78db269cc57f84a60e6d2654f75e42512bfdf4e1 100644 GIT binary patch literal 50010 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 Date: Sat, 19 Oct 2024 16:24:34 +0200 Subject: [PATCH 15/17] Updated more links --- R/calculate_protein_abundance.R | 8 ++++---- R/data.R | 2 +- man/rapamycin_dose_response.Rd | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/R/calculate_protein_abundance.R b/R/calculate_protein_abundance.R index f7638fc5..d48ee6c3 100644 --- a/R/calculate_protein_abundance.R +++ b/R/calculate_protein_abundance.R @@ -18,12 +18,12 @@ #' for a protein to be included in the analysis. The default value is 3, which means #' proteins with fewer than three unique peptides will be excluded from the analysis. #' @param method a character value specifying with which method protein quantities should be -#' calculated. Possible options include \code{"sum"}, which takes the sum of all precursor -#' intensities as the protein abundance. Another option is \code{"iq"}, which performs protein +#' calculated. Possible options include `"sum"`, which takes the sum of all precursor +#' intensities as the protein abundance. Another option is `"iq"`, which performs protein #' quantification based on a maximal peptide ratio extraction algorithm that is adapted from the #' MaxLFQ algorithm of the MaxQuant software. Functions from the -#' \href{https://doi.org/10.1093/bioinformatics/btz961}{\code{iq}} package are -#' used. Default is \code{"iq"}. +#' \href{https://doi.org/10.1093/bioinformatics/btz961}{`iq`} package are +#' used. Default is `"iq"`. #' @param for_plot a logical value indicating whether the result should be only protein intensities #' or protein intensities together with precursor intensities that can be used for plotting using #' \code{peptide_profile_plot()}. Default is \code{FALSE}. diff --git a/R/data.R b/R/data.R index 62226e87..218959f0 100644 --- a/R/data.R +++ b/R/data.R @@ -39,7 +39,7 @@ #' Rapamycin dose response example data #' #' Rapamycin example data used for the vignette about dose response data. The data was obtained -#' from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} and corresponds +#' from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} and corresponds #' to experiment 18. FKBP1A the rapamycin binding protein and 39 other randomly sampled proteins #' were used for this example dataset. The concentration range includes the following points: #' 0 (DMSO control), 10 pM, 100 pM, 1 nM, 10 nM, 100 nM, 1 uM, 10 uM and 100 uM. diff --git a/man/rapamycin_dose_response.Rd b/man/rapamycin_dose_response.Rd index 9ea683a4..4932532c 100644 --- a/man/rapamycin_dose_response.Rd +++ b/man/rapamycin_dose_response.Rd @@ -17,7 +17,7 @@ rapamycin_dose_response } \description{ Rapamycin example data used for the vignette about dose response data. The data was obtained -from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} and corresponds +from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} and corresponds to experiment 18. FKBP1A the rapamycin binding protein and 39 other randomly sampled proteins were used for this example dataset. The concentration range includes the following points: 0 (DMSO control), 10 pM, 100 pM, 1 nM, 10 nM, 100 nM, 1 uM, 10 uM and 100 uM. From 066a3a9a2eeb0feff575d95bdd4585c5db875d90 Mon Sep 17 00:00:00 2001 From: jpquast Date: Sun, 20 Oct 2024 18:43:02 +0200 Subject: [PATCH 16/17] Update Links --- R/calculate_protein_abundance.R | 2 +- R/data.R | 4 ++-- R/fetch_eco.R | 2 +- man/calculate_protein_abundance.Rd | 2 +- man/fetch_eco.Rd | 2 +- man/rapamycin_10uM.Rd | 2 +- man/rapamycin_dose_response.Rd | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/R/calculate_protein_abundance.R b/R/calculate_protein_abundance.R index d48ee6c3..721ba46c 100644 --- a/R/calculate_protein_abundance.R +++ b/R/calculate_protein_abundance.R @@ -22,7 +22,7 @@ #' intensities as the protein abundance. Another option is `"iq"`, which performs protein #' quantification based on a maximal peptide ratio extraction algorithm that is adapted from the #' MaxLFQ algorithm of the MaxQuant software. Functions from the -#' \href{https://doi.org/10.1093/bioinformatics/btz961}{`iq`} package are +#' \href{https://academic.oup.com/bioinformatics/article/36/8/2611/5697917}{`iq`} package are #' used. Default is `"iq"`. #' @param for_plot a logical value indicating whether the result should be only protein intensities #' or protein intensities together with precursor intensities that can be used for plotting using diff --git a/R/data.R b/R/data.R index 218959f0..d2c095d1 100644 --- a/R/data.R +++ b/R/data.R @@ -25,7 +25,7 @@ #' Rapamycin 10 uM example data #' #' Rapamycin example data used for the vignette about binary control/treated data. The data was -#' obtained from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} +#' obtained from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} #' and corresponds to experiment 18. FKBP1A the rapamycin binding protein and 49 other randomly #' sampled proteins were used for this example dataset. Furthermore, only the DMSO control and the #' 10 uM condition were used. @@ -39,7 +39,7 @@ #' Rapamycin dose response example data #' #' Rapamycin example data used for the vignette about dose response data. The data was obtained -#' from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} and corresponds +#' from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} and corresponds #' to experiment 18. FKBP1A the rapamycin binding protein and 39 other randomly sampled proteins #' were used for this example dataset. The concentration range includes the following points: #' 0 (DMSO control), 10 pM, 100 pM, 1 nM, 10 nM, 100 nM, 1 uM, 10 uM and 100 uM. diff --git a/R/fetch_eco.R b/R/fetch_eco.R index bc964287..f3c66c99 100644 --- a/R/fetch_eco.R +++ b/R/fetch_eco.R @@ -19,7 +19,7 @@ #' information." #' #' More information can be found in their -#' \href{https://doi.org/10.1093/nar/gky1036}{publication}. +#' \href{https://academic.oup.com/nar/article/47/D1/D1186/5165344}{publication}. #' #' @param return_relation a logical value that indicates if relational information should be returned instead #' the main descriptive information. This data can be used to check the relations of ECO terms to each other. diff --git a/man/calculate_protein_abundance.Rd b/man/calculate_protein_abundance.Rd index 299717cc..7fac88ed 100644 --- a/man/calculate_protein_abundance.Rd +++ b/man/calculate_protein_abundance.Rd @@ -43,7 +43,7 @@ calculated. Possible options include \code{"sum"}, which takes the sum of all pr intensities as the protein abundance. Another option is \code{"iq"}, which performs protein quantification based on a maximal peptide ratio extraction algorithm that is adapted from the MaxLFQ algorithm of the MaxQuant software. Functions from the -\href{https://doi.org/10.1093/bioinformatics/btz961}{\code{iq}} package are +\href{https://academic.oup.com/bioinformatics/article/36/8/2611/5697917}{\code{iq}} package are used. Default is \code{"iq"}.} \item{for_plot}{a logical value indicating whether the result should be only protein intensities diff --git a/man/fetch_eco.Rd b/man/fetch_eco.Rd index b073a5c7..c5b2bd41 100644 --- a/man/fetch_eco.Rd +++ b/man/fetch_eco.Rd @@ -48,7 +48,7 @@ essential to navigating the ever-growing (in size and complexity) corpus of scie information." More information can be found in their -\href{https://doi.org/10.1093/nar/gky1036}{publication}. +\href{https://academic.oup.com/nar/article/47/D1/D1186/5165344}{publication}. } \examples{ \donttest{ diff --git a/man/rapamycin_10uM.Rd b/man/rapamycin_10uM.Rd index 83dd9d14..0f90e87c 100644 --- a/man/rapamycin_10uM.Rd +++ b/man/rapamycin_10uM.Rd @@ -17,7 +17,7 @@ rapamycin_10uM } \description{ Rapamycin example data used for the vignette about binary control/treated data. The data was -obtained from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} +obtained from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} and corresponds to experiment 18. FKBP1A the rapamycin binding protein and 49 other randomly sampled proteins were used for this example dataset. Furthermore, only the DMSO control and the 10 uM condition were used. diff --git a/man/rapamycin_dose_response.Rd b/man/rapamycin_dose_response.Rd index 4932532c..9ea683a4 100644 --- a/man/rapamycin_dose_response.Rd +++ b/man/rapamycin_dose_response.Rd @@ -17,7 +17,7 @@ rapamycin_dose_response } \description{ Rapamycin example data used for the vignette about dose response data. The data was obtained -from \href{https://doi.org/10.1038/s41467-020-18071-x}{Piazza 2020} and corresponds +from \href{https://www.nature.com/articles/s41467-020-18071-x}{Piazza 2020} and corresponds to experiment 18. FKBP1A the rapamycin binding protein and 39 other randomly sampled proteins were used for this example dataset. The concentration range includes the following points: 0 (DMSO control), 10 pM, 100 pM, 1 nM, 10 nM, 100 nM, 1 uM, 10 uM and 100 uM. From fb0dd7704417e1618b4ef166b0cfb3857ac5e717 Mon Sep 17 00:00:00 2001 From: jpquast Date: Tue, 22 Oct 2024 00:13:08 +0200 Subject: [PATCH 17/17] Update links again --- R/calculate_protein_abundance.R | 3 +-- R/data.R | 8 ++++---- R/fetch_eco.R | 3 +-- man/calculate_protein_abundance.Rd | 3 +-- man/fetch_eco.Rd | 3 +-- man/ptsi_pgk.Rd | 4 ++-- man/rapamycin_10uM.Rd | 2 +- man/rapamycin_dose_response.Rd | 2 +- 8 files changed, 12 insertions(+), 16 deletions(-) diff --git a/R/calculate_protein_abundance.R b/R/calculate_protein_abundance.R index 721ba46c..af63a840 100644 --- a/R/calculate_protein_abundance.R +++ b/R/calculate_protein_abundance.R @@ -22,8 +22,7 @@ #' intensities as the protein abundance. Another option is `"iq"`, which performs protein #' quantification based on a maximal peptide ratio extraction algorithm that is adapted from the #' MaxLFQ algorithm of the MaxQuant software. Functions from the -#' \href{https://academic.oup.com/bioinformatics/article/36/8/2611/5697917}{`iq`} package are -#' used. Default is `"iq"`. +#' `iq` package (\doi{10.1093/bioinformatics/btz961}) are used. Default is `"iq"`. #' @param for_plot a logical value indicating whether the result should be only protein intensities #' or protein intensities together with precursor intensities that can be used for plotting using #' \code{peptide_profile_plot()}. Default is \code{FALSE}. diff --git a/R/data.R b/R/data.R index d2c095d1..14280d35 100644 --- a/R/data.R +++ b/R/data.R @@ -33,7 +33,7 @@ #' @format A data frame containing peptide level data from a Spectronaut report. #' @source Piazza, I., Beaton, N., Bruderer, R. et al. A machine learning-based chemoproteomic #' approach to identify drug targets and binding sites in complex proteomes. Nat Commun 11, 4200 -#' (2020). https://doi.org/10.1038/s41467-020-18071-x +#' (2020). \doi{10.1038/s41467-020-18071-x} "rapamycin_10uM" #' Rapamycin dose response example data @@ -47,13 +47,13 @@ #' @format A data frame containing peptide level data from a Spectronaut report. #' @source Piazza, I., Beaton, N., Bruderer, R. et al. A machine learning-based chemoproteomic #' approach to identify drug targets and binding sites in complex proteomes. Nat Commun 11, 4200 -#' (2020). https://doi.org/10.1038/s41467-020-18071-x +#' (2020). \doi{10.1038/s41467-020-18071-x} "rapamycin_dose_response" #' Structural analysis example data #' #' Example data used for the vignette about structural analysis. The data was obtained from -#' \href{https://doi.org/10.1016/j.cell.2020.12.021}{Cappelletti 2021} +#' Cappelletti et al. 2021 (\doi{10.1016/j.cell.2020.12.021}) #' and corresponds to two separate experiments. Both experiments were limited proteolyis coupled to #' mass spectrometry (LiP-MS) experiments conducted on purified proteins. The first protein is #' phosphoglycerate kinase 1 (pgk) and it was treated with 25mM 3-phosphoglyceric acid (3PG). @@ -69,7 +69,7 @@ #' @source Cappelletti V, Hauser T, Piazza I, Pepelnjak M, Malinovska L, Fuhrer T, Li Y, Dörig C, #' Boersema P, Gillet L, Grossbach J, Dugourd A, Saez-Rodriguez J, Beyer A, Zamboni N, Caflisch A, #' de Souza N, Picotti P. Dynamic 3D proteomes reveal protein functional alterations at high -#' resolution in situ. Cell. 2021 Jan 21;184(2):545-559.e22. doi: 10.1016/j.cell.2020.12.021. +#' resolution in situ. Cell. 2021 Jan 21;184(2):545-559.e22. \doi{10.1016/j.cell.2020.12.021}. #' Epub 2020 Dec 23. PMID: 33357446; PMCID: PMC7836100. "ptsi_pgk" diff --git a/R/fetch_eco.R b/R/fetch_eco.R index f3c66c99..e5da4ada 100644 --- a/R/fetch_eco.R +++ b/R/fetch_eco.R @@ -18,8 +18,7 @@ #' essential to navigating the ever-growing (in size and complexity) corpus of scientific #' information." #' -#' More information can be found in their -#' \href{https://academic.oup.com/nar/article/47/D1/D1186/5165344}{publication}. +#' More information can be found in their publication (\doi{10.1093/nar/gky1036}). #' #' @param return_relation a logical value that indicates if relational information should be returned instead #' the main descriptive information. This data can be used to check the relations of ECO terms to each other. diff --git a/man/calculate_protein_abundance.Rd b/man/calculate_protein_abundance.Rd index 7fac88ed..cecfc79d 100644 --- a/man/calculate_protein_abundance.Rd +++ b/man/calculate_protein_abundance.Rd @@ -43,8 +43,7 @@ calculated. Possible options include \code{"sum"}, which takes the sum of all pr intensities as the protein abundance. Another option is \code{"iq"}, which performs protein quantification based on a maximal peptide ratio extraction algorithm that is adapted from the MaxLFQ algorithm of the MaxQuant software. Functions from the -\href{https://academic.oup.com/bioinformatics/article/36/8/2611/5697917}{\code{iq}} package are -used. Default is \code{"iq"}.} +\code{iq} package (\doi{10.1093/bioinformatics/btz961}) are used. Default is \code{"iq"}.} \item{for_plot}{a logical value indicating whether the result should be only protein intensities or protein intensities together with precursor intensities that can be used for plotting using diff --git a/man/fetch_eco.Rd b/man/fetch_eco.Rd index c5b2bd41..342073a4 100644 --- a/man/fetch_eco.Rd +++ b/man/fetch_eco.Rd @@ -47,8 +47,7 @@ retreive, share, and compare data associated with that evidence using computers, essential to navigating the ever-growing (in size and complexity) corpus of scientific information." -More information can be found in their -\href{https://academic.oup.com/nar/article/47/D1/D1186/5165344}{publication}. +More information can be found in their publication (\doi{10.1093/nar/gky1036}). } \examples{ \donttest{ diff --git a/man/ptsi_pgk.Rd b/man/ptsi_pgk.Rd index 50510581..696b3c2c 100644 --- a/man/ptsi_pgk.Rd +++ b/man/ptsi_pgk.Rd @@ -12,7 +12,7 @@ peptides/precursors of two proteins. Cappelletti V, Hauser T, Piazza I, Pepelnjak M, Malinovska L, Fuhrer T, Li Y, Dörig C, Boersema P, Gillet L, Grossbach J, Dugourd A, Saez-Rodriguez J, Beyer A, Zamboni N, Caflisch A, de Souza N, Picotti P. Dynamic 3D proteomes reveal protein functional alterations at high -resolution in situ. Cell. 2021 Jan 21;184(2):545-559.e22. doi: 10.1016/j.cell.2020.12.021. +resolution in situ. Cell. 2021 Jan 21;184(2):545-559.e22. \doi{10.1016/j.cell.2020.12.021}. Epub 2020 Dec 23. PMID: 33357446; PMCID: PMC7836100. } \usage{ @@ -20,7 +20,7 @@ ptsi_pgk } \description{ Example data used for the vignette about structural analysis. The data was obtained from -\href{https://doi.org/10.1016/j.cell.2020.12.021}{Cappelletti 2021} +Cappelletti et al. 2021 (\doi{10.1016/j.cell.2020.12.021}) and corresponds to two separate experiments. Both experiments were limited proteolyis coupled to mass spectrometry (LiP-MS) experiments conducted on purified proteins. The first protein is phosphoglycerate kinase 1 (pgk) and it was treated with 25mM 3-phosphoglyceric acid (3PG). diff --git a/man/rapamycin_10uM.Rd b/man/rapamycin_10uM.Rd index 0f90e87c..545d936a 100644 --- a/man/rapamycin_10uM.Rd +++ b/man/rapamycin_10uM.Rd @@ -10,7 +10,7 @@ A data frame containing peptide level data from a Spectronaut report. \source{ Piazza, I., Beaton, N., Bruderer, R. et al. A machine learning-based chemoproteomic approach to identify drug targets and binding sites in complex proteomes. Nat Commun 11, 4200 -(2020). https://doi.org/10.1038/s41467-020-18071-x +(2020). \doi{10.1038/s41467-020-18071-x} } \usage{ rapamycin_10uM diff --git a/man/rapamycin_dose_response.Rd b/man/rapamycin_dose_response.Rd index 9ea683a4..f777d8cf 100644 --- a/man/rapamycin_dose_response.Rd +++ b/man/rapamycin_dose_response.Rd @@ -10,7 +10,7 @@ A data frame containing peptide level data from a Spectronaut report. \source{ Piazza, I., Beaton, N., Bruderer, R. et al. A machine learning-based chemoproteomic approach to identify drug targets and binding sites in complex proteomes. Nat Commun 11, 4200 -(2020). https://doi.org/10.1038/s41467-020-18071-x +(2020). \doi{10.1038/s41467-020-18071-x} } \usage{ rapamycin_dose_response